先总结一下Top10吧
- Array转ArrayList
- 判断一个数组是否包含某个值
- 在循环内部删除List中的一个元素
- HashTable与HashMap
- 使用集合原始类型(raw type)
- 访问级别
- ArrayList和LinkedList
- 可变与不可变
- 父类和子类的构造方法
- “”还是构造方法
这个列表总结了10个Java开发人员最常犯的错误。
1、Array转ArrayList
当需要把Array
转成ArrayList
的时候,开发人员经常这样做:
List 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 arrayList = new ArrayList(Arrays.asList(arr));
ArrayList
的构造方法可以接收一个Collection
类型,而java.util.Arrays.ArrayList
已经实现了该接口。
2、判断一个数组是否包含某个值
开发人员经常这样做:
Set set = new HashSet(Arrays