Array.asList:数组转list

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方法,所以会报错

 输出结果:

  1. aa
  2. bb
  3. cc
  4. 3
  5. - - - - - - - - - - -
  6. [I@287efdd8
  7. - - - - - - - - - - -
  8. 11
  9. 22
  10. 33
  11. - - - - - - - - - - -

如果想根据数组得到一个新的正常的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添加进去

 

另外讨论下Collections.addAll和list.addAll

 List<Integer> list1 = new ArrayList<Integer>() {{add(0); add(-1);}};
	        List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(2, 4, -9));  

	        list1.addAll(list2);
	        System.out.println(list1);
	        list2.set(0, 100000);
	        System.out.println(list1);//深复制
	        System.out.println();  

	        //功能性展示
	        Collections.addAll(list2, 34, 67, 78);
	        System.out.println(list2);
	        list2.addAll(Arrays.asList(34, 67, 78));
	        System.out.println(list2);
	        System.out.println();

结果:

[0, -1, 2, 4, -9]
[0, -1, 2, 4, -9]

[100000, 4, -9, 34, 67, 78]
[100000, 4, -9, 34, 67, 78, 34, 67, 78]

 

时间: 2024-10-23 04:46:40

Array.asList:数组转list的相关文章

Array.asList:数组转list时你一定要知道的“陷阱”!

最近开发中,业务上处理,经常用到asList方法,这让我不经想起了它的很多容易让人犯错的地方或者误解的地方,所以就想抽出时间来,整理一下,和大家分享出来,深夜了,话不多说,主要以代码为主,简易的代码,你一看就知道了! 大家都知道这个方法是将数组转成list,是JDK中java.util包中Arrays类的静态方法.大家使用时一定要注意(请看代码和注释,一看就明了了): [java] view plaincopy String s[]={"aa","bb","

Arrays.asList(数组) 解说

最近在用Arrays的asList()生成的List时,List元素的个数时而不正确. Java代码 一:Arrays.asList(数组)该方法是将数组转化为集合(该方法主要用于Object对象数组,如果是基本类型该方法获得的.size()长度都为1) //经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1 char arrc = {'a','b'}; int  arrint = {1,2,4}: Arrays.asList(arrc).size() ;//  结果为1: Ar

【Sorting】【Array】数组中的逆序对

数组中的逆序对 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 输入: 每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数.其中1 <= n <= 10^5. 第二行包含n个整数,每个数组均为int类型. 输出: 对应每个测试案例,输出一个整数,表示数组中的逆序对的总数. 样例输入: 4 7 5 6 4 样例输出: 5 思路 分治的思想,统计两边内部的逆序对,以及左右两边之间的逆序对 代码 long

【LeetCode-面试算法经典-Java实现】【215-Kth Largest Element in an Array(数组中第K大的数)】

[215-Kth Largest Element in an Array(数组中第K大的数)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 代码下载[https://github.com/Wang-Jun-Chao] 原题 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth d

无序数组array, 找到数组中两个数的最大差值

题目链接: 无序数组array, 找到数组中两个数的最大差值, 且大数出现在小数之后,如:arr[i]-arr[j], 且 i<j.比如: array 是 [2, 3, 10, 6, 4, 8, 1],最大差值是8(10-2) 解题思路: 记录当前访问过的数组中的最小值 min_val; 2) 当前元素值arr[i] - min_val 和 max_diff作比较 若大于 max_diff , 则更新它的值 1 import javax.validation.constraints.Min; 2

golang之 Array(数组)

目录 一.Array(数组) 二.数组的定义 1. 基本语法 三.数组的初始化 1. 方式一 2. 方式二 3. 方式三 四.数组的遍历 1. 方式一:for循环遍历 2. 方式二:for range遍历 五.多维数组 1. 二维数组的定义 2. 二维数组的遍历 六.数组是值类型 七.数组的其他相关方法 一.Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 二.数组的定义 1. 基本语法 // 基本语法: var

leetCode 26.Remove Duplicates from Sorted Array(删除数组重复点) 解题思路和方法

Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory.

(每日算法)LeetCode --- Search in Rotated Sorted Array(旋转数组的二分检索)

Search in Rotated Sorted Array I && II Leetcode 对有序数组进行二分查找(下面仅以非递减数组为例): int binarySort(int A[], int lo, int hi, int target) { while(lo <= hi) { int mid = lo + (hi - lo)/2; if(A[mid] == target) return mid; if(A[mid] < target) lo = mid + 1;

2-JavaScript Array对象(数组)

JavaScript Array 对象 1.数组创建: (1)使用Array构造函数 (2)数组字面量表示法 2.数组方法: 下面是几个重要的数组原型方法: 1)join() join(separator):将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符,该方法只接收一个参数:即分隔符. 2)push()和pop() push():可以接受任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后的数组的长度. pop():数组末尾移除最后一项,减少数组的