Java开发最常犯的错误
- Array转ArrayList
- 判断一个数组是否包含某个值
- 在循环内部删除List中的一个元素
- Hashtable与HashMap
- 使用集合原始类型(raw type)
- 访问级别
- ArrayList和LinkedList
- 可变与不可变
- 父类和子类的构造方法
1. Array转ArrayList
错误写法:
List<String> list = Arrays.asList(arr);
原因:Arrays.asList()会返回一个ArrayList,但是要特别注意,这个ArrayList是Arrays类的静态内部类,并不是java.util.ArrayList类。java.util.Arrays.ArrayList类实现了set(), get(),contains()方法,但是并没有实现增加元素的方法(事实上是可以调用add方法,但是没有具体实现,仅仅抛出UnsupportedOperationException异常),因此它的大小也是固定不变的。为了创建一个真正的java.util.ArrayList,你应该这样做:
正确写法:
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr));
2.判断一个数组是否包含某个值
通常做法:
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
以上代码可以正常工作,但是没有必要将其转换成set集合,将一个List转成Set需要额外的时间,其实我们可以简单的使用如下方法即可:
Arrays.asList(arr).contains(targetValue);
或者
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;