概述:

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

常用方法:

1、add(E e):

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

2、remove(Object o):

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

3、clear():

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

4、contains(Object o):

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

5、size():

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

6、isEmpty():

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

代码示例:

import java.util.ArrayList;
import java.util.Collection;public class CollectionDemo {public static void main(String[] args) {//创建Collection集合对象Collection list = new ArrayList();//添加元素到集合中list.add("我爱学习");list.add("Java");list.add("程序猿");System.out.println(list);  //[我爱学习, Java, 程序猿]//删除调用集合对象中的指定元素list.remove("程序猿");System.out.println(list);  //[我爱学习, Java]//判断调用集合对象中是否包含指定的元素boolean boo = list.contains("我爱学习");System.out.println(boo);  //true//获取调用集合对象当前状态下的内容个数int size = list.size();System.out.println(size);  //2//判断调用集合对象当前状态下是否为空boolean boo2 = list.isEmpty();System.out.println(boo2);  //false//清除调用集合对象中的所有元素list.clear();System.out.println(list);  //[]}
}

方法名带有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方法的取反】把指定集合的元素从调用集合中保留,其他元素删除(保留两集合中的相同的元素)

代码示例:

import java.util.ArrayList;
import java.util.Collection;public class CollectionAllMethodDemo {public static void main(String[] args) {//定义集合对象Collection list1 = new ArrayList();//想集合list1中添加元素list1.add("张三");list1.add("李四");list1.add("王五");list1.add("赵六");list1.add("老七");//打印两个集合进行查看System.out.println(list1); //[张三, 李四, 王五, 赵六, 老七]    //添加指定集合中的元素到调用集合对象中Collection list2 = new ArrayList();System.out.println(list2); //[]list2.addAll(list1);System.out.println(list2); //[张三, 李四, 王五, 赵六, 老七]//把指定集合的元素从调用集合中删除 Collection list3 = new ArrayList();list3.add("张三");list3.add("李四");list3.add("王五");list3.add("赵六");list3.add("老七");list3.add("老八");list3.add("老九");System.out.println(list3); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]list3.removeAll(list1);//删除相同的,留下不同的System.out.println(list3); //[老八, 老九]//判断调用集合中是否包含指定集合中的元素boolean boo = list3.containsAll(list1);System.out.println(boo); //false  (因为在上一步removeAll()方法中,相同的已经被删除)//把指定集合的元素从调用集合中保留,其他元素删除Collection list4 = new ArrayList();list4.add("张三");list4.add("李四");list4.add("王五");list4.add("赵六");list4.add("老七");list4.add("老八");list4.add("老九");System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七, 老八, 老九]list4.retainAll(list1); //留下相同的,删除不同的System.out.println(list4); //[张三, 李四, 王五, 赵六, 老七] }
}

Collection的遍历

概念:

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

1、数组法

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

集合如何变为数组?

toArray()

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

toArray() 返回一个Object数组

遍历集合:

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

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

代码示例:

import java.util.ArrayList;
import java.util.Collection;public class CollectioLoopDemo {public static void main(String[] args) {//创建集合对象Collection list = new ArrayList();//添加集合元素list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("老七");//遍历集合//将集合转换为Object类型的数组Object[] array = list.toArray();//遍历数组(完成遍历集合)for (int i = 0; i < array.length; i++) {System.out.print(array[i] + " ");  //张三 李四 王五 赵六 老七 }}}

2、迭代器【重点】

迭代器:

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

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

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

常用的迭代器:Iterator ListIterator

迭代器的功能:

1、hasNext():

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

2、next():

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

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

遍历集合:

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

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

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

代码示例:

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;public class CollectioLoopDemo2 {public static void main(String[] args) {//创建集合对象Collection list = new ArrayList();// 添加集合元素list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("老七");//获取迭代器对象Iterator iterator = list.iterator();//集合while循环进行遍历while (iterator.hasNext()) {//获取集合对应位置的数据Object str = iterator.next();//输出System.out.print(str + " "); //张三 李四 王五 赵六 老七 }          }}

迭代器遍历的原理:

图示:

文字描述:

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

注意事项:

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

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

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

Collection(单列集合)相关推荐

  1. JAVA day18,19 单列集合Collection:List(ArrayList,LinkedList,Vector)、Queue(Deque)、Set(HashSet,TreeSet),比较器

    Collection单列集合 所有超级接口: Iterable<E> 所有已知子接口: BeanContext, BeanContextServices, BlockingDeque< ...

  2. 容器集合——Collection(单列)、Map(双列)

    集合体系结构 集合类的特点 提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变 集合类的体系图 Collection(单列) 概述     - 是单例集合的顶层接口,它表示一组对象,这些对 ...

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

    目录 前言必读 一.概念 1.关系网图 2.区别 二.代码例子 使用场景选择: 四.set迭代器遍历 1.为什么要用set迭代器遍历? 2.迭代器是什么? 3.迭代器注意事项 例子展示: 五.增强fo ...

  4. 集合包括两大类:collection(单列集合祖宗接口)、Map(双列集合祖宗接口)

    Collection:List.Set List集合添加的元素有序.重复.有索引 Set集合添加的元素无序.不重复.无索引 标题Collection常见的成员方法 add.clear.remove.c ...

  5. java中单列集合的根接口是_java 单列集合总结

    Collection 接口 add() remove() contains() clear(); size(); 迭代器遍历(普通迭代器,不能再遍历过程中修改集合的长度) List接口 单列集合 有序 ...

  6. Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

    这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 ...

  7. Java-Collection集合之单列集合List,以及遍历方式

    Collection值单列集合List(),以及遍历方式 知识点-- 单列集合常用类的继承体系 讲解: Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口 ...

  8. java 中遍历双列集合_获取单列集合,双列集合,数组的Stream流对象以及简单操作...

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

  9. Java---Collection单列集合详解

    目录 一.单列集合的介绍 二.单列集合的使用 1:关于Collection (1)迭代器遍历 (2)增强for循环遍历 (3)Lambda表达式遍历 2:List的使用 (1)ArrayList的使用 ...

最新文章

  1. 2020年史上最全PyTorch资源合集,Github 标星1w+
  2. java自定义类怎么比大小_实战:Java 扑克牌比较游戏
  3. 2020年奇安信校招JAVA岗笔试
  4. 那些年一起学习的PHP(三)
  5. Java学习笔记4——I/O框架
  6. python计算a的平方加b的平方_NumPy计算范数2的平方
  7. php事务 面向对象,PHP面向对象之事务脚本模式(详解)
  8. k8s访问控制--理解RBAC和OPA
  9. 开源android手写批注,浅析各阅读平台手写批注 智器阅读显身手
  10. Java 容器类练习题(一)
  11. oracle 用户包含;,Oracle 数据库查看client的用户登录信息包括ip
  12. MFC之添加PNG,JPG图片
  13. Anatomy of a Program in Memory
  14. Atitit 作用域的理解attilax总结
  15. 服务器系统怎么么安装手绘板驱动,wacom数位板如何使用?wacom数位板驱动安装教程!...
  16. HDMI EDID详细解析
  17. c语言提示函数已有主体,C++中的函数名称粉碎机制和它的逆向应用 筋斗云网络...
  18. JS重点整理之JS原型链彻底搞清楚
  19. python分割文件_python简单分割文件的方法
  20. 解决方案:集团型施工企业安全生产数字化管理系统

热门文章

  1. About_PHP_验证码的生成
  2. arcgis_SDE安装步骤
  3. Sigmatel37xx GPIO的使用
  4. 在ASP.NET使用javascript的一点小技巧(转www.chinacs.net 中文C#技术站 )
  5. 输入一个数,判断这个数的二进制有几个0,几个1(完整代码)
  6. 深层神经网络——多层网络解决异或运算
  7. PostgreSQL的安装和启动方法大全
  8. 华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密
  9. 让你的产品更懂世界:如何提升场景文本识别中的语言模型
  10. 菊长说丨一文读懂MySQL4种事务隔离级别