集合的遍历一共有三种,普通for遍历,增强for遍历,迭代器遍历,增强for和迭代器,每种遍历的适用情况不同,增强for底层就是用迭代器实现的。
普通for:适用于有索引的集合,例如List体系的集合,Key是Integer类型的Map集合,数组。遍历过程可增删改查。
增强for:适用与Collection体系的集合,也可用于数组,遍历过程一般不可增删改查。
迭代器:适用于Collection体系的集合,不能用与数组,可增删改查。
1.普通for
1)对List集合遍历
List<String> list = new ArrayList<String>( );
list.add("Hello");
list.add("world");
for(int i = 0; i< list.size();i++){
System.out.println(list.get(i));
}
2)对Map集合遍历
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "hello");
map.put(2, "world");
for(int i = 1; i <= map.size();i++){
System.out.println(i+ ":"+map.get(i));
}
2.增强for
1)对List集合遍历
List<String> list = new ArrayList<String>( );
list.add("Hello");
list.add("world");
for(String s;list){
System.out.println(s);
}
2)Map集合转换成Set集合遍历
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "hello");
map.put(2, "world");
Set<Map.Entry<Integer,String>> set = map.entrySet();
for(Map.Entry<Integer,String> en:set){
System.out.println(en.getKey()+":"+en.getValue());
}
3.迭代器
1)对List集合遍历
List<String> list = new ArrayList<String>( );
list.add("Hello");
list.add("world");
Iterator<String> it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
2)Map集合转换成Set集合遍历
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "hello");
map.put(2, "world");
Set<Map.Entry<Integer,String>> set = map.entrySet();
while(it.hasNext()){
Map.Entry<Integer,String> en = it.next();
System.out.println(en.getKey()+":"+en.getValue());
}
增删改查的方法
1)普通for:根据索引增删改查。
2)迭代器:根据迭代器方法增删改查(ListIterator)。
迭代器或者增强for遍历过程中通过集合的方法增删,也就是改变集合的长度,会出现ConcurrentModificationException(并发修改异常),所以迭代器遍历过程中只能用迭代器的方法增删,ListIterator中的add()、remove()方法,Iterator只有remove(),ListIterator只能是List体系的集合使用。
网友评论