Java中的集合(二)单列集合顶层接口------Collection接口
Java中的集合(二)单列集合顶层接口------Collection接口
Collection是一个高度封装的集合接口,继承自Iterable接口,它提供了所有集合要实现的默认方法。由于Iterable封装了Iterator迭代器,因此Collection可以使用Iterator迭代器。 Collection用于表示一组单值对象的集合,这些对象也称为元素。 Collection接口定义了一系列抽象方法,规范了对单值类型的集合的操作标准。
一、Collection子接口或子类
Collection分别有Queue、List及Set三个子接口,一个AbstractCollection抽象类。由于Collection接口没有可用的实现类,所以在使用Collection时,必须使用它的子类或子接口。

二、Collection常用方法

三、Collection增加和移除元素
String str = "hello world";
Collection collection = new ArrayList();
collection.add("hello"); boolean isChange = collection.add(str);
boolean isWas = collection.remove(str); Iterator ite = collection.iterator(); while(ite.hasNext()) {
System.out.println(ite.next());
}
(一)、添加元素
1、使用add(E e)方法向Collection中添加元素,如果Collection的结构改变了,也就是元素添加成功了,该方法就会返回“true“,否则返回“false”;
2、如果Collection引用的是List接口或List的子类,调用add方法时,如果已经存储有该元素,那么集合中就有两个该元素(因为List接口是有序可重复的);
3、如果Collection引用的是Set接口或Set的子类,调用add方法时,如果已经存储有该元素,那么不会重复添加,保证集合中只有一个该元素(因为Set接口是无序不可重复的)。
add(E e)和addAll(Collection<? extends E> c)的区别:
当传递给方法的参数是一个集合对象时,
1、add方法添加的集合对象本身;
2、addAll方法添加的是集合对象当中的所有元素,集合对象本身不会被添加。
(二)、移除元素
使用remove(Object obj)方法移除Collection中的元素,如果Collection中存在该元素,执行完成后返回“true”,否则返回“false”。
使用removeAll(Collection<?> c)方法移除通过参数传递过来的Collection中的所有元素如果传递过来的Collection中某些元素在目标Collection中不存在,这些元素将会忽略。
retainAll(Collection<?> c)方法正好和removeAll(Collection<?> c)方法相反。不是移除所有给定参数Collection中元素,而是保留保留这些元素,移除其他的元素。
记住,只有目标Collection中已经存在了这些元素,这些元素才可以保留。在参数Collection中存在而目标Collection中不存在的元素,将不会被新增到目标Collection。它们将被忽略。
四、检测一个Collection是否包含一个确定的元素
Collection接口中有两个方法来确定Collection中是否包含一个或多个元素,这两个方法分别为:contains(Object o)和containsAll(Collection<?> c)。
1、contains(Object o):如果这个Collection含有这个元素,contains()方法将返回true,反之,返回“false”。
2、containsAll(Collection<?> c):如果这个Collection含有参数Collection中的所有元素,containsAll()方法将返回true,反之,返回“false”。
五、Collection的大小
Collection接口可以调用size()方法返回Collection的大小。
六、Collection的遍历
1、由于Collection是Iterable接口的,Iterable有封装了Iterator迭代器,所有Collection可以使用迭代器遍历元素;
2、可以使用foreach循环遍历Collection元素。
七、AbstractCollection抽象类
AbstractCollection是Collection接口的一个直接实现类,Collection接口下的子类大多继承自AbstractCollection,比如List的实现类,Set的实现类。除了iterator()和size()方法,它提供了一些其他接口的默认实现,其他集合类可以继承此类来复用。
AbstractCollection除了提供一些其他接口的默认实现,还定义了两个抽象方法,留给子类实现:
1、public abstract Iterator<E> iterator();
2、public abstract int size();
子类必须实现上面两个抽象方法。另外,AbstractCollection默认不支持添加元素的操作,直接调用add(E e)方法会报UnsupportedOperationException错误。
Java中的集合(二)单列集合顶层接口------Collection接口的更多相关文章
- java中Comparator的用法 -- 实现集合和数组排序
在java中,如果要对集合对象或数组对象进行排序,需要实现Comparator接口以达到我们想要的目标. 接下来我们模拟下在集合对象中对日期属性进行排序 一.实体类Step package com.l ...
- JAVA基础部分复习(二、集合类型)
对于这些常用的集合,建议还是需要先了解一下底层实现原理,这样在不同的使用场景下才能选择更好的方案. Set介绍以及对比,常用方法: package cn.review.day02; import ja ...
- java中的最重要的 集合框架
java.util这个重要的包包含大量的类和接口,支持很多的功能.例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间.观察事件.操作位集合.标记字符串.处理格式化数据等的类.ja ...
- java基础笔试题二(集合关系)
知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...
- java中Collections.sort()方法实现集合排序
1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>(); //定 ...
- Java学习关于集合框架的基础接口--Collection接口
集合框架(Collection Framework)是Java最强大的子系统之一,位于java.util 包中.集合框架是一个复杂的接口与和类层次,提供了管理对象组的最新技术.Java集合框架标准 ...
- java中封装类(二)
java中的数字类型包括 Byte,Short,Integer,Long,Float,Double.其中前四个是整数,后两个是浮点数. 在说java中数字类型之前先来看看它们统一的基类Number. ...
- java中的ArrayList 、List、LinkedList、Collection关系详解
一.基础介绍(Set.List.Map) Set(集):集合中的元素不按特定方式排序,并且没有重复对象.他的有些实现类能对集合中的对象按特定方式排序. List(列表):集合中的元素按索引位置排序,可 ...
- java中的ArrayList 、List、LinkedList、Collection
原文地址: http://www.cnblogs.com/liqiu/p/3302607.html 一.基础介绍(Set.List.Map) Set(集):集合中的元素不按特定方式排序,并且没有重复对 ...
随机推荐
- Flutter 打包Android APK 笔记与事项
获取一个KEY 首先要获取 你的 打包应用的一个 key ,这一步其实和 在AndroidStudio 上打包 APK 一样,都是要注册一个本地的 key,key 其实也就是 jks文件啦. 如果已经 ...
- MySQL导出数据到文件中的方法
MySQL导出数据到文件中的方法 1.导出数据到txt文件中实例:把数据表studscoreinfo中所有数据导出到指定的位置方法:select * from 表名 into outfile 指定导出 ...
- 「newbee-mall新蜂商城开源啦」 前后端分离的 Vue 版本即将开源
新蜂商城 Vue 版本 2019 年 10 月份我在 GitHub 开源仓库中上传了新蜂商城项目的所有源码,至今已经有小半年的时间了,感兴趣的可以去了解一下这个 Spring Boot 技术栈开发的商 ...
- C - 小明系列故事――捉迷藏 HDU - 4528 bfs +状压 旅游-- 最短路+状压
C - 小明系列故事――捉迷藏 HDU - 4528 这个题目看了一下题解,感觉没有很难,应该是可以自己敲出来的,感觉自己好蠢... 这个是一个bfs 用bfs就很好写了,首先可以预处理出大明和二明能 ...
- HTML往div中赋值
HTML中往div赋值 <div id="mazey">content</div> 使用JavaScript: var mazey=document.get ...
- 036_python的大文件下载以及进度条展示
复习 1.黏包现象 粘包现象的成因: tcp协议的特点,面向流的,为了保证可靠传输,所以有很多优化的机制. 无边界 所有在连接建立的基础上传递的数据之间没有界限. 收发消息很有可能不完全相等. 缓存机 ...
- 【FreeRTOS学习06】深度解剖中断与任务之间同步的具体使用场景
嵌入式系统中中断是必不可少的一部分: [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 1 前言 2 中断特点 3 延迟中断处理 3.1 信号量的使用 3.2 ...
- FOC: Park变换电角度误差带来的影响
关于坐标变换已经在这篇博客中提到<FOC中的Clarke变换和Park变换详解>,在FOC算法的实际调试过程中会遇到很多与理论有所偏差的问题,往往这些情况下,需要对理论有较深刻的理解,才能 ...
- Linux设备模型之kobject
阿辉原创,转载请注明出处 参考文档:LDD3-ch14.内核文档Documentation/kobject.txt,本文中使用到的代码均摘自Linux-3.4.75 ----------------- ...
- ubuntu安装java方法
详情请点链接:https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-1 ...