如果要将数组转换为 ArrayList,我们一般的做法会是这样
List list = Arrays.asList(arr);
Arrays.asList() 将返回一个 ArrayList,它是 Arrays 中的私有静态类,它不是 java.util.ArrayList 类。如下图所示
Arrays 内部的 ArrayList 只有 set、get、contains 等方法,但是没有能够像是 add 这种能够使其内部结构进行改变的方法,所以 Arrays 内部的 ArrayList 的大小是固定的。
如果要创建一个能够添加元素的 ArrayList ,你可以使用下面这种创建方式:
ArrayList arrayList = new ArrayList(Arrays.asList(arr));
因为 ArrayList 的构造方法是可以接收一个 Collection 集合的,所以这种创建方式是可行的。
错误二:检查数组是否包含某个值
===============
检查数组中是否包含某个值,部分程序员经常会这么做:
Set set = new HashSet(Arrays.asList(arr));
return set.contains(targetValue);
这段代码虽然没错,但是有额外的性能损耗,正常情况下,不用将其再转换为 set,直接这么做就好了:
return Arrays.asList(arr).contains(targetValue);
或者使用下面这种方式(穷举法,循环判断)
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;