-
Collection中能存放什么元素?
- 没有使用泛型之前,Collection中可以存储Object的所有子类型。
- 使用了泛型之后,Collection中只能存储某个具体的类型。
- Collection中什么都能存,只要是Object的子类型就行,(集合中只能存储内存地址)
-
关于Collection接口中常用的方法:
- boolean add(Object o); // 向集合中添加元素
- boolean remove (Object o); //删除集合中的某个元素
- int size(); //获取集合中元素的个数
- void clear(); //清空集合
- boolean contains(Object o); //判断当前集合中是否包含元素 o
- boolean isEmpty(); //判断该集合中元素的个数是否为0
- Obejct[] toArray(); //调用这个方法可以把集合转换成数组。(使用不多)
-
关于集合遍历/迭代,Iterator:
- 讲解的遍历方式/迭代方式,是所有Collection子类通用的一种方式。
- 在Map集合中不能用,在所有的Collection以及子类中使用。
- 以下两个方法是迭代器对象Iterator中的方法:
- Boolean hasNext(); //如果仍有元素,则返回true
- Object next(); // 指向下一个元素,并且返回此元素
- 结论:存放在一个集合中的类型,一定要重写equals方法。不然比较的就是内存地址了。
-
使用Iterator迭代集合时,调用remove()的注意事项
- 1、当集合的结构发生改变时,迭代器必须重新获取,如果没有重新获取,调用next()方法时就出现异常。
- 2、在迭代集合元素的过程中,不能调用集合对象的remove方法删除元素。会出现异常。
- 3、在迭代元素的过程当中,一定要使用迭代器Iterator的remove方法,删除元素。不要使用集合的remove方法删除元素。
-
使用增强for进行遍历
- 可以代替iterator迭代器,但是底层仍然是迭代器,调用的是迭代器的方法,hasNext(),next()
- foreach:
- 叫做增强for循环,或者叫做foreach
- foreach有一个缺点:没有下标,在需要使用下标的循环中,不建议使用增强for循环。
- for(数据类型 变量名 : 数组或者集合){
- }