Collection(单列集合)

绝地灬酷狼 2022-12-30 08:29 283阅读 0赞

概述:

是一个单列集合的顶层接口,定义了单列集合都拥有的共性功能,他的功能自己不能使用,必须要通过实现类来使用,学习共性功能,通过实现类ArrayList来使用功能其实就是对集合存放的数据进行操作的行为。

常用方法:

1、add(E e):

添加元素到调用集合对象中 (放进集合中的元素会自动装箱)

2、remove(Object o):

删除调用集合对象中的指定元素

3、clear():

清除调用集合对象中的所有元素 (只清空数据,集合还存在,只不过集合为空

4、contains(Object o):

判断调用集合对象中是否包含指定的元素

5、size():

获取调用集合对象当前状态下的内容个数(长度)

6、isEmpty():

判断调用集合对象当前状态下是否为空

代码示例:

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. public class CollectionDemo {
  4. public static void main(String[] args) {
  5. //创建Collection集合对象
  6. Collection list = new ArrayList();
  7. //添加元素到集合中
  8. list.add("我爱学习");
  9. list.add("Java");
  10. list.add("程序猿");
  11. System.out.println(list); //[我爱学习, Java, 程序猿]
  12. //删除调用集合对象中的指定元素
  13. list.remove("程序猿");
  14. System.out.println(list); //[我爱学习, Java]
  15. //判断调用集合对象中是否包含指定的元素
  16. boolean boo = list.contains("我爱学习");
  17. System.out.println(boo); //true
  18. //获取调用集合对象当前状态下的内容个数
  19. int size = list.size();
  20. System.out.println(size); //2
  21. //判断调用集合对象当前状态下是否为空
  22. boolean boo2 = list.isEmpty();
  23. System.out.println(boo2); //false
  24. //清除调用集合对象中的所有元素
  25. list.clear();
  26. System.out.println(list); //[]
  27. }
  28. }

方法名带有all的方法

【操作集合中的数据到另一个集合】

1、addAll(Collection<? extends E> c):

添加指定集合中的元素到调用集合对象中

2、removeAll(Collection<? extends E> c):

把指定集合的元素从调用集合中删除(删除与指定集合中相同的元素,谁调用删除谁)

3、containsAll(Collection<? extends E> c) :

判断调用集合中是否包含指定集合中的元素

4、retainAll(Collection<? extends E> c):

【是removeAll方法的取反】把指定集合的元素从调用集合中保留,其他元素删除(保留两集合中的相同的元素)

代码示例:

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. public class CollectionAllMethodDemo {
  4. public static void main(String[] args) {
  5. //定义集合对象
  6. Collection list1 = new ArrayList();
  7. //想集合list1中添加元素
  8. list1.add("张三");
  9. list1.add("李四");
  10. list1.add("王五");
  11. list1.add("赵六");
  12. list1.add("老七");
  13. //打印两个集合进行查看
  14. System.out.println(list1); //[张三, 李四, 王五, 赵六, 老七]
  15. //添加指定集合中的元素到调用集合对象中
  16. Collection list2 = new ArrayList();
  17. System.out.println(list2); //[]
  18. list2.addAll(list1);
  19. System.out.println(list2); //[张三, 李四, 王五, 赵六, 老七]
  20. //把指定集合的元素从调用集合中删除
  21. Collection list3 = new ArrayList();
  22. list3.add("张三");
  23. list3.add("李四");
  24. list3.add("王五");
  25. list3.add("赵六");
  26. list3.add("老七");
  27. list3.add("老八");
  28. list3.add("老九");
  29. System.out.println(list3); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]
  30. list3.removeAll(list1);//删除相同的,留下不同的
  31. System.out.println(list3); //[老八, 老九]
  32. //判断调用集合中是否包含指定集合中的元素
  33. boolean boo = list3.containsAll(list1);
  34. System.out.println(boo); //false (因为在上一步removeAll()方法中,相同的已经被删除)
  35. //把指定集合的元素从调用集合中保留,其他元素删除
  36. Collection list4 = new ArrayList();
  37. list4.add("张三");
  38. list4.add("李四");
  39. list4.add("王五");
  40. list4.add("赵六");
  41. list4.add("老七");
  42. list4.add("老八");
  43. list4.add("老九");
  44. System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]
  45. list4.retainAll(list1); //留下相同的,删除不同的
  46. System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七]
  47. }
  48. }

Collection的遍历

概念:

把重复操作集合中元素的过程就叫做集合遍历

1、数组法

Collection集合不能直接使用循环遍历,想办法把集合变为数组,遍历数组拿到数据达到遍历集合的效果

集合如何变为数组?

toArray()

Collection提供了一个方法可以完成这个需求,这个方法:

toArray() 返回一个Object数组

遍历集合:

1、调用toArray方法把集合变为数组

2、遍历数组 获取数据进行操作【完成了集合的遍历】

代码示例:

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. public class CollectioLoopDemo {
  4. public static void main(String[] args) {
  5. //创建集合对象
  6. Collection list = new ArrayList();
  7. //添加集合元素
  8. list.add("张三");
  9. list.add("李四");
  10. list.add("王五");
  11. list.add("赵六");
  12. list.add("老七");
  13. //遍历集合
  14. //将集合转换为Object类型的数组
  15. Object[] array = list.toArray();
  16. //遍历数组(完成遍历集合)
  17. for (int i = 0; i < array.length; i++) {
  18. System.out.print(array[i] + " "); //张三 李四 王五 赵六 老七
  19. }
  20. }
  21. }

2、迭代器【重点】

迭代器:

他是java中专门用来遍历容器的接口,他提供了相关的功能来对 容器的数据进行判断和获取,功能借助于循环语句【while】完成重复的获取容器中的数据,从而达到遍历的效果。

为什么需要迭代器(Iterator)?

迭代器是遍历Collection(单列集合)集合的通用方式,可以在对集合遍历的同时进行增加、删除(必须通过调用列表迭代器的方法来实现增加、删除

常用的迭代器:Iterator ListIterator

迭代器的功能:

1、hasNext():

判断下一个位置是否有元素

2、next():

获取位置上的元素,同时把迭代器的指针移动下一个位置

方法每次只能判断一个位置和获取一个位置的元素,想要重复的获取集合的数据需要重复的调用这两个方法,结合与while循环,hasNext方法作为循环条件,next作为循环体的一部分获取集合的数据。

遍历集合:

1、集合要获取迭代器对象

【Collection提供了获取方法:iterator()】

2、通过while循环调用迭代器的方法进行获取数据进行操作

代码示例:

  1. import java.util.ArrayList;
  2. import java.util.Collection;
  3. import java.util.Iterator;
  4. public class CollectioLoopDemo2 {
  5. public static void main(String[] args) {
  6. //创建集合对象
  7. Collection list = new ArrayList();
  8. // 添加集合元素
  9. list.add("张三");
  10. list.add("李四");
  11. list.add("王五");
  12. list.add("赵六");
  13. list.add("老七");
  14. //获取迭代器对象
  15. Iterator iterator = list.iterator();
  16. //集合while循环进行遍历
  17. while (iterator.hasNext()) {
  18. //获取集合对应位置的数据
  19. Object str = iterator.next();
  20. //输出
  21. System.out.print(str + " "); //张三 李四 王五 赵六 老七
  22. }
  23. }
  24. }

迭代器遍历的原理:

图示:

在这里插入图片描述

文字描述:

集合的对象通过iterator方法获取迭代器对象同时迭代器的对象到集合头部位置前,指针指向下一个位置【第一个元素位置】,启动while循环执行hasNext方法判断位置是否有值,根据结果执行next方法,通过next方法获取对应位置的元素同时移动指针到下一个位置,重复这个过程一直到hasNext方法的结果为false结束循环,遍历结束

注意事项:

1、hasNext方法执行了集合对象.size() +1 次,比集合的长度大1

2、next方法执行的次数就是集合的元素个数,移动迭代器指针

3、next方法可以单独使用,有风险所以一般结合hasNext方法使用

发表评论

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

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

相关阅读

    相关 Collection单列集合

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

    相关 java单列_JAVA之单列集合

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

    相关 Java 集合,单列集合

    概述: 集合是java中存储数据一种容器,可以分为单列集合Collection和双列集合Map。单列集合Collection又分为List和Set,这两个继承Collec...