一、关于集合中的迭代器的关系
首先要明确集合的继承和关联关系
Collection接口继承Iterable接口(集合的顶级接口内存在Iterator方法)
Collection接口关联Iterator接口(迭代器对象)
List 作为Collection的继承Collection类的同时 也有自己的迭代方法 listIterator()
而Set集合只是继承了Collection的迭代器
同时在JDK1.8之后出现了一个新的迭代器spliterator(可分割迭代器,为了并行遍历元素而设计的一个迭代器)
而Map集合并没有继承Iterable接口 所以也没有和Iterator有关联关系了。
但是Map集合可以通过Set集合来使用迭代器(这个稍后再说。)
二、集合中常用的三种遍历方法
1、for i 循环遍历
List<String> list = new ArrayList<>(); // 创建一个ArrayList集合 只能存String类型元素
list.add("a");
list.add("b");
list.add("c");
list.add("d"); // 添加元素
for (int i = 0; i < list.size(); i++) { // for i 遍历
System.out.println(list.get(i));
}
2、foreach遍历
List<String> list = new ArrayList<>(); // 创建一个ArrayList集合 只能存String类型元素
list.add("a");
list.add("b");
list.add("c");
list.add("d"); // 添加元素
for (String s : list){ // foreach 遍历
System.out.println(s);
}
3、迭代器进行遍历
List<String> list = new ArrayList<>(); // 创建一个ArrayList集合 只能存String类型元素
list.add("a");
list.add("b");
list.add("c");
list.add("d");
Iterator<String> it = list.iterator(); // 创建list的迭代器对象
while (it.hasNext()){ // 判断有无下一个值
String s = it.next(); // 取出元素给s
System.out.println(s); // 输出
}
三、Map集合的遍历方法
1、将每个键值对都封装到一个Entry对象中,再把所有Entry的对象封装到Set集合中返回
HashMap<String,String> map = new HashMap<>(); // 创建一个HashMap集合 k和v都只能存放String
map.put("a","张三");
map.put("b","李四");
map.put("c","王五");
map.put("d","赵六"); // 给map集合添加元素
Set<Map.Entry<String,String>> set = map.entrySet(); // 通过entrySet()方法得到一个键值对集合
for(Map.Entry<String,String> entry : set){ // 将集合存放到Map.Entry类型的key和value中
System.out.println(entry.getKey() + " " + entry.getValue()); // 通过getkey()方法得到key
// 通过getvalue方法得到value
}
2、将Map中所有的键装到Set集合中迭代器取值
HashMap<String,String> map = new HashMap<>(); // 创建一个HashMap集合 k和v都只能存放String
map.put("a","张三");
map.put("b","李四");
map.put("c","王五");
map.put("d","赵六"); // 给map集合添加元素
Set<String> set = map.keySet(); // 将map集合中的key都取出放入到一个Set集合
Iterator<String> it = set.iterator(); // set调用迭代器
while (it.hasNext()){ // 判断是否有数据
String key = it.next(); // 将值取出
String value = map.get(key); // map集合通过key值获取value的值
System.out.println(key + " " + value); // 输出
}
3、返回集合中所有的value的值的集合
HashMap<String,String> map = new HashMap<>(); // // 创建一个HashMap集合 k和v都只能存放String
map.put("a","张三");
map.put("b","李四");
map.put("c","王五");
map.put("d","赵六"); // 给map集合添加元素
Collection<String> values = map.values();// 将map集合中所有的value值传入dao一个Collection集合
for (String s : values){ // foreach循环传值
System.out.println(s); // 输出
}