1.2.3 Collection集合的遍历
Iterator:
E next():返回迭代的下一个元素。
boolean hasNext():如果仍有元素可以迭代,则返回 true。
while(it.hasNext()){
//System.out.println(it.next());
String s = it.next();
System.out.println(s);
第2章 List集合
List:有序的 collection(也称为序列)
List集合的特点:
A:有序(存储和取出元素的顺序一致)
B:存储的元素可以重复
2.2 List集合的特有成员方法
void add(int index,E element):在指定位置添加元素
E remove(int index):删除指定位置的元素
E get(int index):获取指定位置的元素
E set(int index,E element):修改指定位置的元素
List集合的遍历:
A:迭代器
B:普通for循环
for (int x = 0; x < 3; x++) {
System.out.println(list.get(x));
}
for(int x=0; x<list.size(); x++) {
//System.out.println(list.get(x));
String s = list.get(x);
System.out.println(s);
}
ListIterator:
ListIterator<E> listIterator():返回此列表元素的列表迭代器
public interface ListIterator<E>extends Iterator<E>
特有功能:
E previous():返回列表中的前一个元素。
boolean hasPrevious():如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
注意:ListIterator可以实现逆向遍历,但是要求先正向遍历,才能逆向遍历。
2.6 并发修改异常产生的原因及解决方案
我有一个集合:List<String> list = new ArrayList<String>();
里面有三个元素list.add("hello");list.add("world");list.add("java");
我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。
ConcurrentModificationException:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
产生的原因:
迭代器依赖于集合而存在,在判断成功后,集合中添加了新的元素,而迭代器并不知道,所有就报错了。
其实这个问题说的是:迭代器遍历集合中的元素的时候,不要使用集合对象去修改集合中的元素。
如何解决呢?
A:迭代器遍历的时候,我可以通过迭代器修改集合中的元素
元素是跟在刚才迭代的元素后面的
B:集合遍历的时候,我可以通过集合对象修改集合中的元素
元素是在最后添加的
2.7 增强for的概述和使用
增强for:是for循环的一种
格式:
for(元素的数据类型 变量名 : 数组名或者Collection集合对象名) {
使用变量名即可,这个变量名代表的其实就是数组或者Collection集合中的元素
}
好处:简化了数组和Collection集合的遍历
弊端:目标不能为null。如何保证呢?在遍历前先对目标进行不为null的判断。
第3章 数据结构和ArrayList集合的相关案例
3.2.1 List集合子类特点及ArrayList集合存储字符串并遍历
List:
ArrayList:底层数据结构是数组,查询快,增删慢
LinkedList:底层数据结构是链表,查询慢,增删快
ArrayList存储字符串并遍历:
A:迭代器
B:普通for
C:增强for
|
|