java List 常见坑
数组转化list
int[] a = {1,2,3};
List list = Arrays.asList(a);
如上代码,期望转化为有三个元素的 list,结果发现,list 里只有一个数组类型的元素。
原因是 int 类型可以转化为Integer,int 数组却不能转化为 Integer 数组。
解决办法:
使用 Arrays.stream 的方式来转化
或者 把数组声明为 Integer
对数组转化的list进行增删操作
Integer[] a = {1,2,3};
a[1] = 4;
List list = Arrays.asList(a);
list.add(5);
如上,数组元素更改之后,List 元素也更改了。说明 list 共享了数组,一定要注意相互修改引起的数据混乱,不要交给其他方法修改。
对 list 进行增删操作报错了。
原因是 转化后的 list 并不是我们熟悉的 java.util.ArrayList , 而是 Arrays 的内部类,并没有实现 add 方法。
解决办法:重新 new 一个,实现两者分离。
什么时候使用 list,什么时候使用 map
需要快速查找单个值,对空间要求没那么严格,用map
什么时候使用 ArrayList ,什么时候使用Linked List
ArrayList 在任何方面都胜过 LinkedList