当前位置: 首页 > 编程笔记 >

浅谈Arrays.asList() 和ArrayList类型区别

杭镜
2023-03-14
本文向大家介绍浅谈Arrays.asList() 和ArrayList类型区别,包括了浅谈Arrays.asList() 和ArrayList类型区别的使用技巧和注意事项,需要的朋友参考一下

<pre name="code" class="html"><pre name="code" class="html">Arrays.asList()

将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

<pre name="code" class="html">自己测试:<span>	</span>//arrayList
<span>		</span>List list = new ArrayList();
<span>		</span>list.add("yz_b_insert");
<span>		</span>list.add("yz_b_del");
<span>		</span>list.add("yz_b_update");
<span>		</span>list.add("yz_b_see");
<span>		</span>System.out.println(list.contains("yz_b_update")+"=="+list);
<span>		</span>//arrays.asList()
<span>		</span>String dd = "yz_b_insert,yz_b_del,yz_b_update,yz_b_see";
<span>		</span>List list2 = Arrays.asList(dd);
<span>		</span>System.out.println(list2.contains("yz_b_update")+"@@@@@"+list2);

输出结果:

<pre name="code" class="html">arraylist:true==[yz_b_insert, yz_b_del, yz_b_update, yz_b_see]
<pre name="code" class="html">arrays.asList():false@@@@@[yz_b_insert,yz_b_del,yz_b_update,yz_b_see]

要是用<pre name="code" class="html">contains 来判断集合中存在某个字符串,注意 <pre name="code" class="html">arraylist转化的不可用 

本人测试不可以,有高人可以指点一下 

下面是网上找的资源 

<span style="color: rgb(102, 102, 102); font-family: Tahoma;">为什么Arrays.asList产生的List是不可添加或者删除,否则会产生UnsupportedOperationException,就可以得到解释了。 </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">如果我们想把一个变长或者数据转变成List, 而且期望这个List能够进行add或者remove操作,那该怎么做呢? </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">我们可以写一个类似的方法,里面直接采用java.util.ArrayList即可。 </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><span style="color: rgb(102, 102, 102); font-family: Tahoma;">比如: </span><br style="color: rgb(102, 102, 102); font-family: Tahoma;" /><pre class="java" name="code" style="color: rgb(102, 102, 102); background-color: rgb(255, 255, 255);">import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MyArrays {
	public static <T> List<T> asList(T... a) {
		List<T> list = new ArrayList<T>();
		Collections.addAll(list, a);
		return list;
	}
}

测试代码如下:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
	@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
		print(stooges);
		List<List<String>> seasonsList = Arrays.asList(retrieveSeasonsList());
		print(seasonsList);
		/*
		 * 自己实现一个asList方法,能够添加和删除。
		 */
		List<String> list = MyArrays.asList("Larry", "Moe", "Curly");
		list.add("Hello");
		print(list);
	}
	private static <T> void print(List<T> list) {
		System.out.println(list);
	}
	private static List<String> retrieveSeasonsList() {
		List<String> seasonsList = new ArrayList<String>();
		seasonsList.add("Spring");
		seasonsList.add("Summer");
		seasonsList.add("Autumn");
		seasonsList.add("Winter");
		return seasonsList;
	}
}

输出结果:

[Larry, Moe, Curly]
[[Spring, Summer, Autumn, Winter]]
[Larry, Moe, Curly, Hello]

以上就是小编为大家带来的浅谈Arrays.asList() 和ArrayList类型区别全部内容了,希望大家多多支持小牛知识库~

 类似资料:
  • 本文向大家介绍浅谈python新式类和旧式类区别,包括了浅谈python新式类和旧式类区别的使用技巧和注意事项,需要的朋友参考一下 python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type)。 在2.2之前,比如2.1版本中,类和类型是不同的,如a是Clas

  • 本文向大家介绍浅谈MySQL和mariadb区别,包括了浅谈MySQL和mariadb区别的使用技巧和注意事项,需要的朋友参考一下 MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun、Oracle收购)。除了作为一个Mysql的“向下替代品”,MariaDB包括的一些新特性使它优于MySQL。 这两个数据库究竟有什么本质的区

  • 本文向大家介绍浅谈COOKIE和SESSION区别,包括了浅谈COOKIE和SESSION区别的使用技巧和注意事项,需要的朋友参考一下 一、cookie介绍 cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。 1、设置Cookie PHP用SetCook

  • 本文向大家介绍浅谈addEventListener和attachEvent的区别,包括了浅谈addEventListener和attachEvent的区别的使用技巧和注意事项,需要的朋友参考一下 • addEventListener共有3个参数,如下所示: element.addEventListener(type,listener,useCapture); 参数 参数说明 element 要绑定

  • 本文向大家介绍浅谈php和.net的区别,包括了浅谈php和.net的区别的使用技巧和注意事项,需要的朋友参考一下 本人最近从asp.net转向了php,主攻方向是Web开发,感觉两者之间还是有不少的区别的。 1.相对于.net,php更偏向于解释性语言类型; 2.在.net中,我们操作的主要是封装好的对象-类库;在php中,我们主要操作的对象主要是各种函数; 3.php的编程工具相对于。net的

  • 本文向大家介绍浅谈Synchronized和Lock的区别,包括了浅谈Synchronized和Lock的区别的使用技巧和注意事项,需要的朋友参考一下 如下所示: Synchronized是内置的java关键字,Lock是一个java类。 Synchronized无法判断是否获取到了锁,Lock可以判断是否获取到了锁。 Synchronized会自动释放锁,Lock必须手动释放锁。 Synchro