Collection接口和list,set子类
Collection接口常用的子接口有:List接口、Set接口
List接口常用的子类有:ArrayList类、LinkedList类
Set接口常用的子类有:HashSet类、LinkedHashSet类
方式1:Collection<元素类型> 变量名 = new ArrayList<元素类型>();
方式2:Collection 变量名 = new ArrayList();
方式1创建的集合,只能存储<>中指定的元素类型,该方式为常用方式
方式2创建的集合,集合的元素类型默认为Object类型,即任何类型的元素都可以存储。
Collectoin集合的功能概述:
1)添加功能
boolean add(Object obj):添加功能
boolean addAll(Collection c):添加一个集合的元素
2)删除功能
void clear():移除所有元素
boolean remove(Object obj):移除一个元素
boolean removeAll(Collection c):移除一个集合的元素(只要有一个元素移除
了就返回true)
3)判断功能
boolean contains(Object obj):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(只
有包含指定集合中所有的元素才叫包含)
boolean isEmpty():判断集合是否为空(指集合的数据元素为空)
4)获取功能
Iterator iterator():迭代器,集合专有的遍历方式
5)长度功能
int size():元素的个数
6)交集功能
boolean retainAll(Collection c):两个集合中都有的元素(假设有两个集合A、
B,A对B做交集,最终的结果保存在集合A中,集合B不变,返回值表示的是集合A是否发生过改变)
7)把集合转换为数组
Object[] toArray():把集合转成数组,可以实现集合的遍历
Collection集合有两个子接口List和Set。
List集合
List集合的特点:有序(指存储和取出元素的顺序一致)、存储元素可重复
List集合的特有功能:
1)添加功能
void add(int index,Object element):在指定位置添加元素
2)获取功能
Object get(int index):获取指定位置的元素
3)列表迭代器
ListIterator listIterator():迭代所有的元素
ListIteraror listIterator(int index):从指定位置开始迭代元素
4)删除功能
Object remove(int index):根据索引删除元素,返回被删除的元素
5)修改功能
Object set(int index,Object element):根据索引修改元素,返回被修改的元素
List集合有ArrayList、Vector和LinkedList三个常用子类。
LinkedList 中的方法

Set集合
Set集合的特点:无序(指元素的存储和取出顺序不一致)、存储元素唯一
Set集合有HashSet和TreeSet两个常用子类。
Set集合的子类
1)HashSet类的特点:
HashSet类不保证Set的迭代顺序,特别是它不保证该顺序恒久不变。
注意:虽然Set集合的元素是无序的,但是作为集合来说,它肯定有它自己的元素存储顺序
。而如果你的顺序恰好和它的存储顺序一致,这代表不了有序,你可以多存储一些数据,看效果。
HashSet类的底层数据结构是哈希表。而哈希表保证元素的唯一性依赖于两个方法:int
hashCode()和boolean equals(Object obj)
用HashSet存储元素的执行顺序:
首先比较hashCode()值是否相同
是:继续执行equals(),看其返回值
是true:说明元素重复,不添加
是false:就直接添加到集合
否:就直接添加到集合
HashSet类有一个子类LinkedHashSet,LinkedHashSet存储元素的特点是有序、唯一
LinkedHashSet的底层数据结构由链表和哈希表组成,由链表保证元素有序,由哈希表保证
元素唯一。
---|Collection: 单列集合
---|List: 有存储顺序, 可重复
---|ArrayList: 数组实现, 查找快, 增删慢
由于是数组实现, 在增和删的时候会牵扯到数组
增容, 以及拷贝元素. 所以慢。数组是可以直接
按索引查找, 所以查找时较快
---|LinkedList: 链表实现, 增删快, 查找慢
由于链表实现, 增加时只要让前一个元素记住自
己就可以, 删除时让前一个元素记住后一个元
素, 后一个元素记住前一个元素. 这样的增删效
率较高但查询时需要一个一个的遍历, 所以效率
较低
---|Vector: 和ArrayList原理相同, 但线程安全, 效率略低
和ArrayList实现方式相同, 但考虑了线程安全问
题, 所以效率略低
---|Set: 无存储顺序, 不可重复
---|HashSet
---|TreeSet
---|LinkedHashSet
---| Map: 键值对
---|HashMap key不可重复,无序存取,哈希表实现
---|TreeMap
---|HashTable
---|LinkedHashMap 双向链表的哈希表
LinkedList
Collection接口和list,set子类的更多相关文章
- 集合中Set接口与Collection接口,常用子类TreeSet,HashSet.
Set接口与List接口的不同之处在于: 不允许有重复的数据. 定义如下: public interface Set<E>extends Collection<E> 主要方法与 ...
- java中常用的数据结构--Collection接口及其子类
java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类. 一.集合和数组的区别 二.C ...
- Collection接口
Collection接口所定义的方法: clear:清空 retainAll 求一个Collection和另一个 Collection的交集. object[] toArray() 把里面的各个对象 ...
- Java集合框架之Collection接口
Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...
- 集合框架之Collection接口
Collection 层次结构中的根接口.Collection表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 coll ...
- java_18 Collection接口
1.Collection接口 Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素 ...
- JAVA中Collection接口和Map接口的主要实现类
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素 ...
- Java:集合,Collection接口框架图
Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...
- 【Java面试题】35 List, Set, Map是否继承自Collection接口?
Collection是最基本的集合接口,声明了适用于JAVA集合(只包括Set和List)的通用方法. Set 和List 都继承了Conllection:Set具有与Collection完全一样的接 ...
随机推荐
- 关于利用注射点判断数据库web是否分离
得到客户端主机名:select host_name();得到服务端主机名: select @@servername; 本文转hackfreer51CTO博客,原文链接:http://blog.51ct ...
- pomelo安装笔记
npm install -dnpm config set registry https://registry.npm.taobao.orgnpm install pomelo -gpomelo lis ...
- JSON Introduction
理解 JSON(JavaScript Object Notation),一种轻量级的数据交换格式,基于JS的一个子集,但其数据格式与语言无关. 通俗来说,如果你是PHP,要和JS互相发送信息,那么这时 ...
- P1458 顺序的分数 Ordered Fractions(有技巧的枚举)+C++类封装=精简代码
题目描述 输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数. 这有一个例子,当N=5时,所有解 ...
- P4720【模板】扩展卢卡斯,P2183 礼物
扩展卢卡斯定理 最近光做模板了 想了解卢卡斯定理的去这里,那题也有我的题解 然而这题和卢卡斯定理并没有太大关系(雾 但是,首先要会的是中国剩余定理和exgcd 卢卡斯定理用于求\(n,m\)大,但模数 ...
- 王颖奇 201771010129《面向对象程序设计Java》第十八周实验总结
实验十八 总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设 ...
- Centos7 网卡桥接
一.在centos7主机创建用于虚拟化的网桥 1)增加 /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0BOOTPROTO=staticONBO ...
- 阿里巴巴泰山版《Java 开发者手册》,也是一份防坑指南
我是风筝,公众号「古时的风筝」,一个不只有技术的技术公众号,一个在程序圈混迹多年,主业 Java,另外 Python.React 也玩儿的 6 的斜杠开发者. Spring Cloud 系列文章已经完 ...
- python爬虫-直播吧
概述 这是一个我很喜欢的小网站,想了解这个网站先从爬虫开始,爬取直播吧所有的栏目及内容,再存入数据库.先写个简单点的,后期再不断的优化下. 准备阶段 直播吧网址https://www.zhibo8.c ...
- spring test---测试SpringMvc初识
现在越来越多人使用SpringMvc来开发系统,在开发中可定需要对后台url地址请求测试,并且返回预期的结果! Spring提供的测试类MockMvc来进行url地址请求测试,使用方方式: packa ...