集合框架的总结

1集合的概念

现实生活中:很多的事物凑在一起

数学中的集合:具有共同属性的事物的总体。

java中的集合类:是一种工具类,就像是容器,储存任意数量有共同属性的对象。

2与数组的对比——为何选择集合而不是数组

a.数组的长度固定,集合长度可变

b.数组只能通过下标访问元素,类型固定,而有的集合可以通过类型查找所映射的具体对象。

3集合的作用

a.在类的内部,对数据进行组织;
b.简单而快速的搜索大数量的条目;
c.有的集合接口,提供了一系列排列有序的元素,并且可以在中间快速的插入或者删除有关元素;
d.有的集合接口,提供了映射关系,可以通过关键字(key)查找到对应的唯一对象,而这个关键字可以是任意类型。

4 集合的分类

在这里插入图片描述
List 序列:Arraylist 数组序列(list滚动列表)
Set集:HashSet 哈希集
Map:HashMap 哈希表

4.1 Collection接口

Collection接口是 (java.util.Collection)是Java集合类的顶级接口之一,整个集合框架就围绕一组标准接口而设计。
Collection方法接口介绍
Collection 接口有 3 种子类型集合: List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、ArrayBlockingQueue等,下面是Collection的所有方法。
在这里插入图片描述
这些方法即可以操作Set集合,也可以操作Queue和List集合,下面分别使用Collection集合接口的方法说明

方法名说明
boolean add(E e)向集合添加元素e,若指定集合元素改变了则返回true
boolean addAll(Collection<? extends E> c)把集合C中的元素全部添加到集合中,若指定集合元素改变返回true
void clear()清空所有集合元素
boolean contains(Object o)判断指定集合是否包含对象o
boolean containsAll(Collection<?> c)判断指定集合是否包含集合c的所有元素
boolean isEmpty()判断指定集合的元素size是否为0
boolean remove(Object o)删除集合中的元素对象o,若集合有多个o元素,则只会删除第一个元素
boolean removeAll(Collection<?> c)删除指定集合包含集合c的元素
boolean retainAll(Collection<?> c)从指定集合中保留包含集合c的元素,其他元素则删除
int size()集合的元素个数
T[] toArray(T[] a)将集合转换为T类型的数组

因为set和list都继承Collection接口,所以colletion接口的方法这两者都可以调用。

4.2 Map接口

是一些键值对<key,value>的集合,每一个键值对可以看做一个entry
三个实现类:HashMap,HashTable,TreeMap。

最常用的是HashMap
声明: Map<String , String > map = new HashMap();

散列映射:HashMap,树映射:TreeMap

方法名说明
put(key,value)用来设置键值对
get(key)用来获取key键相应的值
Set keySet()返回map中key的Set集合
Collection values()将map中的value以Collection的形式返回
Set<Map.Entry<K, V>> entrySet()返回map中多个项的Set集合(此方法适合既获取key又获取value的场景,非常实用)

Map.Entry

Entry<K, V> 是Map内部的接口,其中定义了一些方法:

方法名说明
K getKey()返回此项对应的key
V getValue()返回此项对应的value
V setValue(V value)设置此项中value值

5 List接口及其实现类

list 是元素有序并且可以重复的集合,被称为序列。
List可以精确的控制每个元素的插入位置,或删除某个位置元素

5.1 ArrayList

ArrayList——数组序列,是list的一个重要实现类。
Arraylist底层是由数组实现的。

是list的一种数组形式的实现,实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。优点:遍历速度快。

声明: List<泛型形式> list = new ArrayList();

.get();方法可以获取相应位置的数组

5.2 LinkedList:

是list的一种链表实现。优点:添加、删除元素快

声明: LinkedList<泛型形式> linkedList = newLinkedList<>();
//可以直接用接口list来开辟空间也可直接用LinkedList来开辟
.get();方法可以获取相应位置的链表

6 Set接口

set接口,长度可变,不能重复,无序;<实现类有HashSet,TreeSet>。

声明: Set set = new HashSet<>();

7 Set和List的区别

Set 接口实例存储的是无序的,不重复的数据。List存储的是有序的,可以重复的元素。
Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变
List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变

8 总结

1.Java的集合框架分别派生自Collection和Map接口。
Collection有两个常用子接口List和Set,分别表示有序可重复,无序不可重复的集合。
2.Collection又可以分为List、Queue、Set三个接口。

3.List是与元素有序并且可以重复的集合,被称为序列。List可以精确的控制每个元素的插入位置,或删除某个位置元素。List接口的实现类我们常用的有Arraylist和LinkedList 。
Arraylist,数组序列底层是由数组实现的,实现了数组可变大小的数组,随机访问和遍历元素快,插入删除效率低。

LinkedList,链表序列底层是由链表实现的,优点添加删除快。

4.Set接口,长度可变,元素不能重复,无序。常用的实现类是HashSet,底层是由Hash表实现的

5.Map接口是无序,不能重复的,常用实现类是HashMap,底层是由Hash实现的。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值