JAVA-集合

目录

 

集合框架图

List

定义

继承关系

ArrayList

LinkedList

Set

定义

继承关系

HashSet

LinkedHashSet

TreeSet

Map

定义

继承关系

HashMap

LinkedHashMap

TreeMap

 


集合框架图

List

定义

有序集合(也称为序列 )。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素

继承关系

--Iterable
    --Collection
        --List
            --ArrayList
            --LinkedList

ArrayList

基于数组实现。

优点:基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的,可以直接返回数组中index位置的元素,因此在随机访问集合元素上有较好的性能。

缺点:删除数据却是开销很大的,因为这需要移动数组中插入位置之后的的所有元素

LinkedList

基于双向链表实现,并且实现了Deque接口,可以作为队列使用。

优点:随机访问集合元素时性能较差,因为需要在双向列表中找到要index的位置,再返回

缺点:因为只需要修改对应节点前后的引用,在插入,删除操作是很快

Set

定义

不包含重复元素的集合,允许null

继承关系

--Iterable
    --Collection
        --Set
            --HashSet
                --LinkedHashSet
            --TreeSet 

HashSet

根据hashcode散列存储,对迭代次序不做任何保证,线程不安全

优点:性能相对较快

缺点:无序

LinkedHashSet

根据hashcode散列存储并且使用TreeMap记录数据的插入顺序,对迭代次序有保证,线程不安全

优点:有序(按照插入顺序)

缺点:性能相对较慢

TreeSet

实现了Set的SortSet接口,使用者可以自定义排序规则,并使用LinkedHashMap记录记录顺序,线程不安全

优点:自定义排序

缺点:性能相对较慢

Map

定义

存储key-value映射关系的数据集合

继承关系

--Iterable
    --Collection
        --Map
            --HashMap
                --LinkedHashMap
            --TreeMap

HashMap

根据键的HashCode 值无序存储数据,允许null,HashTable不允许,线程不安全(ConcurrentHashMap线程安全)

优点:性能快

缺点:迭代时无序

LinkedHashMap

保存了插入信息的先后顺序,允许null,线程不安全

优点:有序(按照插入顺序排序)

缺点:性能相对较慢

TreeMap

实现了Map的SortMap接口,按照插入数据的键值进行升序进行存储,线程不安全

优点:有序(按照键值进行排序)

缺点:操作性能慢

 

ps: Map如果需要按照value进行排序时,需要先将Map转换成List<Map.Entery<KetType, ValueType>>,然后在对list进行排序

     List的排序代码:

 Collections.sort(new ArrayList<T>(), new Comparator<T>() {
     @Override
     public int compare(T o1, T o2) {
         return 0;
     }
 });

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值