关于集合的遍历

一、关于集合中的迭代器的关系

首先要明确集合的继承和关联关系

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);               // 输出
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值