Collection 集合

﹏ヽ暗。殇╰゛Y 2024-03-27 16:50 158阅读 0赞

Collection 的遍历方式

迭代器遍历–不依赖索引

  • 迭代器在Java中的类是:Iterator ,迭代器是集合专用的便利方式
    在这里插入图片描述

    package com.mycollection;

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;

    public class A03_CollectionDemo03 {

    1. public static void main (String[] args) {
    2. //1. 创建集合并添加元素
    3. Collection<String> coll = new ArrayList<> ();
    4. coll.add ("aaa");
    5. coll.add ("bbb");
    6. coll.add ("ccc");
    7. coll.add ("ddd");
    8. //2. 获取迭代器对象:迭代器好比一个指针,默认指向集合0索引处
    9. Iterator<String> it = coll.iterator ();
    10. //3. 利用循环不断地去获取集合中的每一个元素
    11. while (it.hasNext ()){
    12. //4. next方法两件事情,获取元素并移动指针到下一个索引
    13. String str = it.next ();
    14. System.out.println (str);
    15. }
    16. }

    }

细节注意点:

  1. 1. 报错NoSuchElementException
  2. 2. 迭代器遍历完毕,指针不会复位
  3. 3. 循环中只能用一次next方法
  4. 4. 迭代器遍历时,不能用集合的方法进行增加或者删除
  5. 如果非要删除,可以用迭代器的remove()方法
  6. package com.mycollection;
  7. import java.util.ArrayList;
  8. import java.util.Collection;
  9. import java.util.Iterator;
  10. /*
  11. 细节注意点:
  12. 1. 报错NoSuchElementException
  13. 2. 迭代器遍历完毕,指针不会复位
  14. 3. 循环中只能用一次next方法
  15. 4. 迭代器遍历时,不能用集合的方法进行增加或者删除
  16. 如果非要删除,可以用迭代器的remove()方法
  17. */
  18. public class A03_CollectionDemo03 {
  19. public static void main (String[] args) {
  20. //1. 创建集合并添加元素
  21. Collection<String> coll = new ArrayList<> ();
  22. coll.add ("aaa");
  23. coll.add ("bbb");
  24. coll.add ("ccc");
  25. coll.add ("ddd");
  26. //2. 获取迭代器对象:迭代器好比一个指针,默认指向集合0索引处
  27. Iterator<String> it = coll.iterator ();
  28. //3. 利用循环不断地去获取集合中的每一个元素
  29. while (it.hasNext ()){
  30. //4. next方法两件事情,获取元素并移动指针到下一个索引
  31. String str = it.next ();
  32. System.out.println (str);
  33. }
  34. //当上面循环结束后,迭代器已经指向了最后没有元素的位置
  35. //System.out.println (it.next ());//NoSuchElementException
  36. //迭代器便利完毕,指针不会复位
  37. System.out.println (it.hasNext ());
  38. //如果我们要继续第二次便利集合,只能再获取一个新的迭代器对象
  39. Iterator<String> it2 = coll.iterator ();
  40. while (it2.hasNext ()){
  41. System.out.println (it.next ());
  42. }
  43. }
  44. }

增强for遍历

  • 增强for 的底层就是迭代器,为了简化迭代器的代码书写的
  • jdk5的新特性,内部原理就是一个Iterator迭代器
  • 所有的单列集合和数组才能使用增强for循环
    集合名.for

    package com.mycollection;

    import java.util.ArrayList;
    import java.util.Collection;

    public class A05_CollectionDemo05 {

    1. public static void main (String[] args) {
  1. Collection<String> coll = new ArrayList<> ();
  2. coll.add("zhangsan");
  3. coll.add("lisi");
  4. coll.add("wangeu");
  5. //快捷方式:集合名.for
  6. for (String x:
  7. coll) {
  8. System.out.println (x);
  9. }
  10. }
  11. }
增强for细节
  1. 修改增强for中的变量,不会改变集合中的原本的数据
  2. s 只是第三方变量,修改也只是第三方

Lambda 表达式遍历

  1. 底层:其实也会自己遍历集合,依次得到每一个元素,
  2. 把得到的每一个元素,传给accept方法,
  3. s依次表示集合中的数据
  4. package com.mycollection;
  5. import java.util.ArrayList;
  6. import java.util.Collection;
  7. import java.util.function.Consumer;
  8. public class A06_CollectionDemo06 {
  9. public static void main (String[] args) {
  10. Collection<String> coll = new ArrayList<> ();
  11. coll.add("zhangsan");
  12. coll.add("lisi");
  13. coll.add("wangwu");
  14. //2. 利用匿名内部类的方式
  15. // 底层:其实也会自己遍历集合,依次得到每一个元素,把得到的每一个元素,传给accept方法,s依次表示集合中的数据
  16. coll.forEach (new Consumer<String> () {
  17. @Override
  18. public void accept (String s) {
  19. System.out.println (s);
  20. }
  21. });
  22. //Lambda 表达式
  23. coll.forEach ((s)-> System.out.println (s));
  24. }
  25. }

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Collect集合

    一、集合介绍? Java是面向对象的语言,一般我们在编程的时候自然需要存储对象的容器,数组可以满足这个需求,但是数组初始化时长度是固定的,但是我们往往需要一个长度可变化的容器

    相关 集合 Collection

    集合 Collection 目录 (一)集合 1.集合的由来 2.集合和数组的区别 3.Collection集合的功能概述 4.集合和数组之间的相互转换 5.

    相关 集合 Collection

    Java提供的两大接口:Collection接口和Map接口,其他的集合类都是由这两个接口衍生 Collection接口 Collection接口定义了一个包含一批对象的集