java中asList()方法的使用

百融云创笔试:大家都知道这个方法是将数组转成list,是JDK中java.util包中Arrays类的静态方法。大家使用时一定要注意(请看代码和注释,一看就明了了): Strings[]={“aa”,”bb”,”cc”}; List<String>sList=Arrays.asList(s); for(Stringstr:sList){//能遍历出各个元素 …

大家好,又见面了,我是你们的朋友全栈君。

百融云创笔试:

大家都知道这个方法是将数组转成list,是JDK中java.util包中Arrays类的静态方法。大家使用时一定要注意(请看代码和注释,一看就明了了):

		String s[]={"aa","bb","cc"};
		List<String> sList=Arrays.asList(s);
		for(String str:sList){//能遍历出各个元素
			System.out.println(str);
		}
		System.out.println(sList.size());//为3
		
		System.out.println("- - - - - - - - - - -");
		
		int i[]={11,22,33};
		List intList=Arrays.asList(i);	//intList中就有一个Integer数组类型的对象,整个数组作为一个元素存进去的
		for(Object o:intList){//就一个元素
			System.out.println(o.toString());
		}
		
		System.out.println("- - - - - - - - - - -");
		
		Integer ob[]={11,22,33};
		List<Integer> objList=Arrays.asList(ob);	//数组里的每一个元素都是作为list中的一个元素
		for(int a:objList){
			System.out.println(a);
		}
		
		System.out.println("- - - - - - - - - - -");
		
		//objList.remove(0);//asList()返回的是arrays中私有的终极ArrayList类型,它有set,get,contains方法,但没有增加和删除元素的方法,所以大小固定,会报错
		//objList.add(0);//由于asList返回的list的实现类中无add方法,所以会报错

运行结果:

aa
bb
cc
3
– – – – – – – – – – –
[I@287efdd8
– – – – – – – – – – –
11
22
33
– – – – – – – – – – –

之所以有以上原因,看看asList的源码就明白了:

public static <T> List<T> asList(T... a) {
	return new ArrayList<T>(a);
}
private final E[] a;
 
	ArrayList(E[] array) {
            if (array==null)
                throw new NullPointerException();
	    a = array;
	}

如果想根据数组得到一个新的正常的list,当然可可以循环一个一个添加,也可以才有以下2个种方法:

ArrayList<Integer> copyArrays=new ArrayList<Integer>(Arrays.asList(ob));//这样就                                                           是得到一个新的list,可对其进行add,remove了
copyArrays.add(222);//正常,不会报错
		
Collections.addAll(new ArrayList<Integer>(5), ob);//或者新建一个空的list,把要转换的                                                                   数组用Collections.addAll添加进去

如果你想直接根据基本类型的数组如int[],long[]直接用asList转成list,那么我们可以选择用apache commons-lang工具包里的数组工具类ArrayUtils类的toObject()方法,非常方便,如下:

Arrays.asList(ArrayUtils.toObject(i));//上边的代码:int i[]={11,22,33};,达到了我们想要的效果

这个类功能很强大:

java中asList()方法的使用

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125564.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ivx开发_低代码平台架构

    ivx开发_低代码平台架构iVX每个编程人不应错过的低代码平台

  • bytebuffer的容量极限和位置_bytebuffer写文件

    bytebuffer的容量极限和位置_bytebuffer写文件缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区:使用缓冲区有这么两个好处:1、减少实际的物理读写次数2、缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数举个简单的例子,比如A地有1w块砖要搬到B地由于没有工具(缓冲区),我们一次只能搬一本,那么就要搬1w次(实际读写次数)如果A…

  • Git的安装与使用教程(超详细!!!)「建议收藏」

    Git的安装与使用教程(超详细!!!)「建议收藏」git提交全部文件1、get.add.gitaddxx命令可以将xx文件添加到暂存区,如果有很多改动可以通过getadd-A.来一次添加所有改变的文件。注意-A选项后面还有一个句点。gitadd-A表示添加所有内容,gitadd.表示添加新文件和编辑过的文件不包括删除的文件;gitadd-u表示添加编辑或者删除的文件,不包括新添加的文件。2.、git…

  • 【最佳网页宽度及其实现】「建议收藏」

    1.设计网页的时候,确定宽度是一件很苦恼的事。以minifun…

  • 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验

    【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验

  • eclipse中怎么自动补全_空格键坏了

    eclipse中怎么自动补全_空格键坏了eclipse自动补全及其空格键优化(去除空格自动补全)使用eclipse在创建其他工作区间的时候,想要配置代码自动补全,因为老是忘记,每次都要从网上查找,于是就自己总结一下。选1是代码自动补全,只需将“.”换为“.qwertyuiopasdfghjklzxcvbnm”就行了,看起来很乱,其实还是有规律可循的。(只需将键盘上的26字母按从左到右,从上到下的顺序按一遍就行了。)选2是空格不会自动补全,因为按空格会自动补全,所以有时候特别烦,而网上的大多数解决方法是需要改代码的,就会显得特别麻烦。于是

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号