关于集合类中的关系

一、集合类的继承体系

简单说明:虚线框里填的都是接口类型,而实线框填写都是具体的实现类

二、特点

Collection:

单列集合的根接口,其子接口有List和Set,List特点是有序可重复Set的特点是无须不重复。其中,ArrayList集合查询速度快,但是删除元素效率低,而Linked List集合插入删除元素快

Map:

双列集合的根接口,用于存储具有键(Key)、值(Value)映射关系的元素

无序、以键值对的形式添加元素,键不能重复,值可以重复,它没有继承Collection接口
 1.遍历
         先取出保存所有键的Set,再遍历Set即可(2种)
         先取出保存所有Entry的Set,再遍历此Set即可
2.HashMap与Hashtable之间的区别
          HashMap非同步 线程不安全,只允许一条记录的键为NULL
         Hashtable同步 线程安全  同步既排队
TreeMap不允许键为NULL

三、Collection接口

Collection接口的方法
Modifier and Type方法描述
1booleanadd​(E e)

确保此集合包含指定的元素(可选操作)。

2booleanaddAll​(Collection<? extends E> c)

将指定集合中的所有元素添加到此集合(可选操作)。

3voidclear​()

从此集合中删除所有元素(可选操作)。

4booleancontains​(Object o)

如果此集合包含指定的元素,则返回 true

5booleancontainsAll​(Collection<?> c)

如果此集合包含指定集合中的所有元素,则返回 true

6booleanisEmpty​()

如果此集合不包含元素,则返回 true

7abstract Iterator<E>iterator​()

返回包含在该集合中的元素的迭代器。

8booleanremove​(Object o)

从该集合中删除指定元素的单个实例(如果存在)(可选操作)。

9booleanremoveAll​(Collection<?> c)

删除指定集合中包含的所有此集合的元素(可选操作)。

10booleanretainAll​(Collection<?> c)

仅保留此集合中包含在指定集合中的元素(可选操作)。

11abstract intsize​()

返回此集合中的元素数。

12Object[]toArray​()

返回一个包含此集合中所有元素的数组。

13<T> T[]toArray​(T[] a)

返回一个包含此集合中所有元素的数组; 返回的数组的运行时类型是指定数组的运行时类型。

14StringtoString​()

返回此集合的字符串表示形式。

List接口

List接口继承了Collection接口,特点是:可以通过索引来访问元素,并且元素有序,存入顺序和取出顺序是一致的。

 

List集合的常用方法
Modifier and Type方法描述
1voidadd​(int index, E element)

将指定的元素插入此列表中的指定位置(可选操作)。

2booleanadd​(E e)

将指定的元素追加到此列表的末尾(可选操作)。

3booleanaddAll​(int index, Collection<? extends E> c)

将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。

4booleanaddAll​(Collection<? extends E> c)

按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。

5voidclear​()

从此列表中删除所有元素(可选操作)。

6booleancontains​(Object o)

如果此列表包含指定的元素,则返回 true

7booleancontainsAll​(Collection<?> c)

如果此列表包含指定集合的所有元素,则返回 true

8booleanequals​(Object o)

将指定的对象与此列表进行比较以获得相等性。

9Eget​(int index)

返回此列表中指定位置的元素。

10inthashCode​()

返回此列表的哈希码值。

11intindexOf​(Object o)

返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。

12booleanisEmpty​()

如果此列表不包含元素,则返回 true

13Iterator<E>iterator​()

以正确的顺序返回该列表中的元素的迭代器。

14intlastIndexOf​(Object o)

返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。

15ListIterator<E>listIterator​()

返回列表中的列表迭代器(按适当的顺序)。

16ListIterator<E>listIterator​(int index)

从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。

17static <E> List<E>of​()

返回包含零个元素的不可变列表。

18static <E> List<E>of​(E e1)

返回一个包含一个元素的不可变列表。

19static <E> List<E>of​(E... elements)

返回包含任意数量元素的不可变列表。

20static <E> List<E>of​(E e1, E e2)

返回一个包含两个元素的不可变列表。

21Eremove​(int index)

删除该列表中指定位置的元素(可选操作)。

22booleanremove​(Object o)

从列表中删除指定元素的第一个出现(如果存在)(可选操作)。

23booleanremoveAll​(Collection<?> c)

从此列表中删除包含在指定集合中的所有元素(可选操作)。

24default voidreplaceAll​(UnaryOperator<E> operator)

将该列表的每个元素替换为将该运算符应用于该元素的结果。

25booleanretainAll​(Collection<?> c)

仅保留此列表中包含在指定集合中的元素(可选操作)。

26Eset​(int index, E element)

用指定的元素(可选操作)替换此列表中指定位置的元素。

27intsize​()

返回此列表中的元素数。

28default voidsort​(Comparator<? super E> c)

根据指定的Comparator引发的顺序排列此列表。

29default Spliterator<E>spliterator​()

在此列表中的元素上创建一个Spliterator

30List<E>subList​(int fromIndex, int toIndex)

返回指定的 fromIndex (含)和 toIndex之间的列表部分的视图。

31Object[]toArray​()

以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。

32<T> T[]toArray​(T[] a)

以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。

ArrayList

正是因为其内部存储形式是以数组形式储存,在增加和删除元素,会重新创建新的数组,效率比较低,因此不适合做大量的增删操作。但是这种数组结构可以通过索引的方式进行访问元素,所以适合遍历和查找元素。

ArrayList方法
Modifier and Type方法描述
1Objectclone​()

返回此 ArrayList实例的浅拷贝。

2voidensureCapacity​(int minCapacity)

如果需要,增加此 ArrayList实例的容量,以确保它至少能够容纳最小容量参数指定的元素数量。

3voidforEach​(Consumer<? super E> action)

Iterable每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。

4Eget​(int index)

返回此列表中指定位置的元素。

5intindexOf​(Object o)

返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。

6booleanisEmpty​()

如果此列表不包含元素,则返回 true

7Iterator<E>iterator​()

以正确的顺序返回该列表中的元素的迭代器。

intlastIndexOf​(Object o)

返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。

ListIterator<E>listIterator​()

返回列表中的列表迭代器(按适当的顺序)。

ListIterator<E>listIterator​(int index)

从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。

Eremove​(int index)

删除该列表中指定位置的元素。

booleanremove​(Object o)

从列表中删除指定元素的第一个出现(如果存在)。

booleanremoveAll​(Collection<?> c)

从此列表中删除指定集合中包含的所有元素。

booleanremoveIf​(Predicate<? super E> filter)

删除满足给定谓词的此集合的所有元素。

protected voidremoveRange​(int fromIndex, int toIndex)

从此列表中删除所有索引为 fromIndex (包括)和 toIndex之间的元素。

voidreplaceAll​(UnaryOperator<E> operator)

将该列表的每个元素替换为将该运算符应用于该元素的结果。

booleanretainAll​(Collection<?> c)

仅保留此列表中包含在指定集合中的元素。

Eset​(int index, E element)

用指定的元素替换此列表中指定位置的元素。

intsize​()

返回此列表中的元素数。

voidsort​(Comparator<? super E> c)

根据指定的Comparator引发的顺序排列此列表。

Spliterator<E>spliterator​()

在此列表中的元素上创建late-binding故障快速 Spliterator

List<E>subList​(int fromIndex, int toIndex)

返回指定的 fromIndex (含)和 toIndex之间的列表部分的视图。

Object[]toArray​()

以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。

<T> T[]toArray​(T[] a)

以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。

voidtrimToSize​()

修改这个 ArrayList实例的容量是列表的当前大小。

LinkedList

该集合的元素是链表的形式储存,有Node类型的first和last属性维护一个双向循环链表,每个元素都用引用的的方式及逆行记住前面一个和后面一个元素,这种方式有利于进行对元素的增删操作。

LinkedList中定义的方法
Modifier and Type方法描述
1

void

add(int index,E element)添加到指定位置
2voidaddFirst(Object o)插入表头
3voidaddLast(Object o)插入表尾
4ObjectgetFirst()返回表头
5ObjectgetLast()返回表尾
6ObjectremoveFirst()移除表头
7ObjectremoveLast()移除表尾

Set接口

Set接口和List接口一样,同样继承了Collection接口,它与Collection接口的基本方法是一致的,功能上没有什么扩充的,只是变的更加严格了。

Set接口中元素的特点:无序不重复

Set接口的两个实现类:HashSet和TreeSet。HashSet是根据元素的哈希值来确定储存位置,具有良好的存取和查找性能,而TreeSet是以二叉树进行存储的,可以实现对集合元素的排序

HashSet集合

它储存的的元素是不重复的,并且元素的顺序是无序的,,当向HashSet集合添加一个元素时,其流程如下:

 为了能保证正常工作,都会要求重写hashCode() 和equals(),实现请看   HashSet集合

TreeSet集合

采用平衡二叉树来储存元素,这样的结构可以保

四、Map接口

Map接口时一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值存在一种对应关系,称为映射。

Map集合常用方法
Modifier and Type方法描述
1voidclear​()

从该地图中删除所有的映射(可选操作)。

2default Vcompute​(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)

尝试计算指定键的映射及其当前映射值(如果没有当前映射,则 null )。

3default VcomputeIfAbsent​(K key, Function<? super K,? extends V> mappingFunction)

如果指定的键尚未与值相关联(或映射到 null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非是 null

4default VcomputeIfPresent​(K key, BiFunction<? super K,? super V,? extends V> remappingFunction)

如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。

5booleancontainsKey​(Object key)

如果此映射包含指定键的映射,则返回 true

6booleancontainsValue​(Object value)

如果此映射将一个或多个键映射到指定的值,则返回 true

7static <K,V> Map.Entry<K,V>entry​(K k, V v)

返回包含给定键和值的不可变Map.Entry

8Set<Map.Entry<K,V>>entrySet​()

返回此地图中包含的映射的Set视图。

9booleanequals​(Object o)

将指定的对象与此映射进行比较以获得相等性。

10default voidforEach​(BiConsumer<? super K,? super V> action)

对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。

11Vget​(Object key)

返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null

12default VgetOrDefault​(Object key, V defaultValue)

返回指定键映射到的值,如果此映射不包含该键的映射,则返回 defaultValue

13inthashCode​()

返回此地图的哈希码值。

14booleanisEmpty​()

如果此映射不包含键值映射,则返回 true

15Set<K>keySet​()

返回此地图中包含的键的Set视图。

16default Vmerge​(K key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)

如果指定的键尚未与值相关联或与null相关联,则将其与给定的非空值相关联。

static <K,V> Map<K,V>of​()

返回一个包含零映射的不可变地图。

static <K,V> Map<K,V>of​(K k1, V v1)

返回包含单个映射的不可变地图。

static <K,V> Map<K,V>ofEntries​(Map.Entry<? extends K,? extends V>... entries)

返回包含从给定条目提取的键和值的不可变地图。

Vput​(K key, V value)

将指定的值与该映射中的指定键相关联(可选操作)。

voidputAll​(Map<? extends K,? extends V> m)

将指定地图的所有映射复制到此映射(可选操作)。

default VputIfAbsent​(K key, V value)

如果指定的键尚未与值相关联(或映射到 null )将其与给定值相关联并返回 null ,否则返回当前值。

Vremove​(Object key)

如果存在(从可选的操作),从该地图中删除一个键的映射。

default booleanremove​(Object key, Object value)

仅当指定的密钥当前映射到指定的值时删除该条目。

default Vreplace​(K key, V value)

只有当目标映射到某个值时,才能替换指定键的条目。

default booleanreplace​(K key, V oldValue, V newValue)

仅当当前映射到指定的值时,才能替换指定键的条目。

default voidreplaceAll​(BiFunction<? super K,? super V,? extends V> function)

将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都被处理或该函数抛出异常。

intsize​()

返回此地图中键值映射的数量。

Collection<V>values​()

返回此地图中包含的值的Collection视图。

HashSet集合是Map接口的一个实现类,用于存储键值映射的关系,但是必须保证不能出现重复的键(键相同,值覆盖)。

Map集合中还有一格实现类Hashtable,它和HashMap十分相似,区别在于Hashtable是线程安全。Hashtable存取元素很慢,目前基本上被HashMap类所取代了,但是Hashtable集合有个子类Properties,在实际应用中挺重要的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值