Java中的集合父亲之collection使用和遍历方式--(单列集合顶级接口)

左手的ㄟ右手 2023-09-28 22:19 181阅读 0赞

目录

前言必读

一、概念

1.关系网图

2.区别

二、代码例子

使用场景选择:

四、set迭代器遍历

1.为什么要用set迭代器遍历?

2.迭代器是什么?

3.迭代器注意事项

例子展示:

五、增强for遍历(迭代器升级版)

格式:

例子展示:

六、lambda表达式遍历(超进化遍历)


前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

一、概念

collection:单列集合的祖宗,一次只能往集合里面添加一个元素

1.关系网图

红色:接口

蓝色:实现类

9c36b3cfac134bf099c7118dd8e9def3.jpeg

2.区别

List系列的集合:添加的元素是有序的、可重复的、有索引的

set系列反之:无序、不可重复、无索引的

名词解释:

有序:指存和取顺序一样。和大小排列等无关

可重复:元素可以重复相同

有索引:可以通过索引找到

二、代码例子

  1. package bao;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. public class Test {
  5. public static void main(String[] args) {
  6. //注意点:collection是一个接口,不能直接创建他的对象.现在为了更直观的学习,创建他实现类的对象来展示,比如ArrayList
  7. Collection<String> coll = new ArrayList<>();
  8. //collection最常见的6个方法
  9. //1.添加元素
  10. //注意点:要往List系列添加元素,永远都是true,因为这个集合是允许元素重复的。而set就不一定了
  11. coll.add("小狗");
  12. coll.add("大狗");
  13. System.out.println(coll);//[小狗, 大狗]
  14. //2.删除
  15. //注意点:因为collection里面定义的是共性的方法,不能通过索引进行删除,只能通过元素的对象进行删除
  16. //删除元素存在则true,不存在则false
  17. coll.remove("大狗");
  18. System.out.println(coll);//[小狗]
  19. //3.判断元素是否存在
  20. //注意点:这个方法底层是通过equals来进行判断的。
  21. //如果这个集合new的是自定义对象,比如student这种,要进行重写里面的方法才能返回true。
  22. boolean bl = coll.contains("as");
  23. System.out.println(bl);//false
  24. //4.判断集合是否为空
  25. //底层就是判断这个集合元素长度是否为0
  26. boolean is = coll.isEmpty();
  27. System.out.println(is);//false
  28. //5.获取集合的长度
  29. int size = coll.size();
  30. System.out.println(size);//1
  31. //6.清空
  32. coll.clear();
  33. System.out.println(coll);//[]
  34. }
  35. }

运行结果:

[小狗, 大狗]
[小狗]
false
false
1
[]

—————————————————————————————**————————————————遍历方式———————————————————————————————————————**

使用场景选择:

1.在遍历的过程中需要删除元素———迭代器

2.仅仅想遍历可以选择增强for或者lambda

四、set迭代器遍历

1.为什么要用set迭代器遍历?

答:因为set集合里面是没有索引的,用不了for循环去遍历,只能用迭代器方式去遍历。

2.迭代器是什么?

答:迭代器是集合专用的遍历方式,不依赖索引进行遍历

3.迭代器注意事项

1.迭代器遍历完成,指针不会复位

2.循环中只能用一次next方法

3.迭代器遍历时,不能用集合的方式进行增加和删除

4.报错:NoSuchElementException

4.遍历完成后还想再进行二次遍历怎么办?

答:再创建一个迭代器去遍历

例子展示:

  1. package bao;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Iterator;
  5. public class Test {
  6. public static void main(String[] args) {
  7. Collection<String> coll = new ArrayList<>();
  8. //1.添加元素
  9. coll.add("霹雳火");
  10. coll.add("急先锋");
  11. //2.创建迭代器对象,迭代器就像一个箭头,默认初始值为0索引
  12. Iterator<String> it = coll.iterator();
  13. //3.开始进行循环获取元素
  14. while (it.hasNext()){//判断元素是否存在,存在则执行下一步
  15. String next = it.next();//next获取元素并移动指针
  16. System.out.println(next);//霹雳火 急先锋
  17. }
  18. //迭代器总结:创建iterator方法,通过while循环,用next进行遍历
  19. //二、错误示范
  20. //1.遍历完成后再调用一次next方法,会报错NoSuchElementException异常
  21. //直白解释:都遍历完成了,还要再next指向后一位没有元素的空位置,肯定会报错的
  22. String next = it.next();
  23. System.out.println(next);//报错:NoSuchElementException
  24. }
  25. }

运行结果:(这里是把错误示范注释掉了,要不然会报错)

霹雳火
急先锋

五、增强for遍历(**迭代器升级版**)

1.增强for遍历底层就是迭代器,为了简化迭代器书写而产生的

2.他是JDK5以后才出现的,其内部原理就是一个Iterator迭代器

3.所有的单列集合和数组才能使用

格式:

for(元素的数据类型 变量名:数组或者集合){

//打印输出

}

例子展示:

  1. package bao;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. public class Test {
  5. public static void main(String[] args) {
  6. Collection<String> coll = new ArrayList<>();
  7. //1.添加元素
  8. coll.add("霹雳火");
  9. coll.add("急先锋");
  10. //快捷键:集合变量名.for+回车键
  11. for (String s : coll) {
  12. System.out.println(s);
  13. }
  14. }
  15. }

运行结果:

霹雳火
急先锋

六、lambda表达式遍历(**超进化遍历**)

  1. package bao;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. public class Test {
  5. public static void main(String[] args) {
  6. Collection<String> coll = new ArrayList<>();
  7. //1.添加元素
  8. coll.add("霹雳火");
  9. coll.add("急先锋");
  10. coll.forEach(s -> System.out.println(s));
  11. //快捷方式:1.coll.forEach,2.括号里面输入s+回车 3.打印输出变量s
  12. }
  13. }

运行结果:

霹雳火
急先锋

发表评论

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

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

相关阅读

    相关 Collection单列集合

    概述: 是一个单列集合的顶层接口,定义了单列集合都拥有的共性功能,他的功能自己不能使用,必须要通过实现类来使用,学习共性功能,通过实现类ArrayList来使用功能其实就

    相关 java单列_JAVA单列集合

    集合 \集合类的特点:提供一种存储空间可变的存储模式,存储的数据容量可以随时发生改变 \和数组的区别:数组是存储同种数据类型、长度在定义后便不可变。 集合分为单列集合(C