集合小总结

本文详细比较了集合与数组在长度、类型、实现和特性的区别,涵盖了List、Set(如HashSet、LinkedHashSet和TreeSet)、Map(如HashMap和TreeMap)的特性,并重点讲解了list与set的区别,以及HashMap和Hashtable的异同。
摘要由CSDN通过智能技术生成

集合

集合与数组区别:

1、集合长度可变,数组长度固定
2、数组可以是基本类型,也可以是引用类型。集合只能是引用类型。
3、数组只能存储同一种数据类型。集合可以存储不同的数据类型,而一般也只是存储同一种数据类型。

集合的分类:

1. Collection

List:元素按照进入的先后顺序保存,可以重复值
LinkedList接口实现类,链表,插入删除,没有同步,线程不安全。
ArrayList接口实现类,数组,随机访问,没有同步,线程不安全。
Vector接口实现类,数组,同步,线程安全。
tack是Vector的实现类。

Set:仅接收一次,不可重复值,并做内部排序。
HashSet使用hash表存储元素,数组类型
LinkedHashSet链表维护元素的插入次序
TreeSet底层实现为二叉树,元素排好序

2. Map

Hashtable接口实现类,同步,线程安全
HashMap接口实现类,不同步,线程不安全
LinkedHashMap双向链表和哈希表实现
WeakHashMap
TreeMap红黑树对所有的key进行排序

list和set的区别:

1、list保证按照插入的顺序排序。set存储和取出顺序不同
2、list值可重复。set值不能重复
3、list可以根据索引直接操作元素。set不能根据索引获取元素

HashSet:

  • 底层数据结构是哈希表实现,元素无序且唯一,线程不安全效率高,可以存储null元素。线程唯一性是靠重写HashCode和equals方法保证,若没有重写这两个方法无法保证元素唯一;
  • 数据会先通过判断HashCode值比较,如果HashCode不相等,那么所存储的两个对象一定不相等。如果HashCode相等,在进行equals比较。equals相等就是同一个对象,就无需存储;

LinkedHashSet:

  • LinkedHashSet底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。

TreeSet:

  • 底层数据结构采用二叉树来实现,元素唯一且已经排好序;
  • 二叉树结构保证了元素的有序性,根据构造方法不同,分为自然排序(无参构造)和比较器排序(有参构造)

Map:

Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。

HashMap和Hashtable区别:

1、HashMap是异步的,线程不安全。HashTable是线程同步的,线程安全,使用了synchronized关键字
2、HashMap可以将一个空值作为key或value保存,最多只能有一个key为空,但是可以有许多的value为空。HashTable中不能有空值。
HashMap性能最好,HashTable性能最差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值