遍历集合(容器)的方法总结
使用Iterator迭代器遍历容器元素
Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,如ArrayList、LinkedList、HashSet...,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。
因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作更为简单,Java引入了迭代器模式。
把访问逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合的内部结构。
使用Iterator遍历List、Set、Map,代码如下:
package com.msl.collection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
* 测试迭代器遍历集合
* @author Senley
*
*/
public class TestIterator {
public static void main(String[] args) {
testIteratorList();
testIteratorSet();
testIteratorMap();
}
public static void testIteratorList() {
List<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
//使用Iterator遍历List
for(Iterator<String> iter=list.iterator();iter.hasNext();) {
String temp = iter.next();
System.out.println(temp);
}
}
public static void testIteratorSet() {
Set<String> set = new HashSet<>();
set.add("aa");
set.add("bb");
set.add("cc");
//使用Iterator遍历Set
for(Iterator<String> iter=set.iterator();iter.hasNext();) {
String temp = iter.next();
System.out.println(temp);
}
}
public static void testIteratorMap() {
Map<Integer,String> map = new HashMap<>();
map.put(100,"aa");
map.put(200,"bb");
map.put(300,"cc");
//使用Iterator遍历Map,第一种方式
Set<Entry<Integer,String>> ss = map.entrySet();
for(Iterator<Entry<Integer,String>> iter=ss.iterator();iter.hasNext();) {
Entry<Integer,String> temp = iter.next();
System.out.println(temp.getKey()+"---"+temp.getValue());
}
//使用Iterator遍历Map,第二种方式
Set<Integer> keySet = map.keySet();
for(Iterator<Integer> iter=keySet.iterator();iter.hasNext();) {
Integer key = iter.next();
System.out.println(key+"---"+map.get(key));
}
}
}
结果如下:
aa
bb
cc
aa
bb
cc
100---aa
200---bb
300---cc
100---aa
200---bb
300---cc
遍历集合(容器)的方法
遍历List方法一:普通for循环
for(int i=0;i<list.size();i++){//list为集合的对象名
String temp = (String)list.get(i);
System.out.println(temp);
}
遍历List方法二:增强for循环
for (String temp : list) {
System.out.println(temp);
}
遍历List方法三:使用Iterator迭代器(1)
for(Iterator iter = list.iterator();iter.hasNext();){
String temp = (String)iter.next();
System.out.println(temp);
}
遍历List方法四:使用Iterator迭代器(2)
Iterator iter = list.iterator();
while(iter.hasNext()){
Object obj = iter.next();
iter.remove();//如果要遍历时,删除集合中的元素,建议使用这种方式
System.out.println(obj);
}
遍历Set方法一:增强for循环
for(String temp:set){
System.out.println(temp);
}
遍历Set方法二:使用Iterator迭代器
for(Iterator iter = set.iterator();iter.hasNext();){
String temp = (String)iter.next();
System.out.println(temp);
}
遍历Map方法一:根据key获取value
Map<Integer, Man> maps = new HashMap<Integer, Man>();
Set<Integer> keySet = maps.keySet();
for(Integer id : keySet){
System.out.println(maps.get(id).name);
}
遍历Map方法二:使用entrySet
Set<Entry<Integer, Man>> ss = maps.entrySet();
for (Iterator iterator = ss.iterator(); iterator.hasNext();) {
Entry e = (Entry) iterator.next();
System.out.println(e.getKey()+"--"+e.getValue());
}