1、Colletion的方法
-
collection的contains、equals、remove,removeAll
会调用obj对象的equals方法,进行比较,所以注意重写equals方法
总结:collection中所有涉及比较的方法,都是用集合中元素的equals来实现的 -
添加元素:add
删除元素:remove
比较元素:equals
交:retainAll
并:addAll
差:removeAll -
collection.toArray <=> Arrays.asList
注意:Arrays.asList(new int[]{1,2,3,4,5,6}),如果传入的是一个基本类型的数组,会将这个数组识别为一个对象;
List<int[]> list = Arrays.asList(new int[]{1,2,3,4,5,6});
list.size = 1;
2、 迭代器Iterator
- 迭代器Iterator
1)、迭代器的默认游标(用于指向元素,类似于指针)都在集合的第一个元素 之前
2)、集合对象每次调用iterator方法会返回一个新的迭代器,所以有可能会造 成死循环:
public void aVoid() throws Exception {
ArrayList<Integer> integers = new ArrayList<>();
integers.add(1);
integers.add(2);
integers.add(3);
integers.add(4);
integers.add(5);
//死循环
while (integers.iterator().hasNext()){
System.out.println(integers.iterator().next());
}
//死循环
while (integers.listIterator().hasNext()){
System.out.println(integers.listIterator().next());
}
}
3)、remove删除当前 游标(指针所指的元素),所以如果游标在集合之前,
或连续两次调用remove就会报错
注意:这里的remove不是Collection中的remove
-
使用增强for循环来遍历
1)、遍历的对象必须实现iteratable接口,因为增强for循环底部使用iterator迭代器
2)、增强for循环,用迭代器将值中遍历对象中取出,赋给一个新对象。
所以在增强for循环中修改遍历对象元素的值是无效的
public void aVoid() throws Exception {
int[] integers = new int[]{1,2,3,4,5};
for (Integer i:integers){
i++;
}
for (int i = 0; i < integers.length; i++) {
System.out.println(integers[i]);
}
}