java中讲解各种集合及其特点

总述

集合在我们实际应用中非常普遍,成为一个优秀的程序员了解各个集合的特点是必不可少的。那么首先我们需要明确集合分为单列集合和双列集合

单列集合为Collection集合,双列集合则为Map集合(键-值对形式),它们为同一层级。

下面我们具体进行分析:

一,Collection集合

Collection<E>  
├── List<E>  
│   ├── ArrayList<E>  
│   └── LinkedList<E>  
│   
└── Set<E>  
    ├── HashSet<E> 
    │   └─── LinkedHashSet<E> 
    └──── TreeSet<E> 

从上面的代码可以看出,很容易看出它分为List<E>和set<E>,它们是继承了Collection<E>的接口,下面是它们的实现类。

List<E>

实现类分为:

  • ArrayList<E>
    • 基于动态数组实现的List,允许随机访问。
  • LinkedList<E>
    • 基于链表实现的List,便于在列表的开头和结尾进行添加和删除操作。
看上面两种:
 ArrayList:有序,可重复,有索引。
  LinkedList :有序,可重复,有索引。
特点:
①:ArrayList,查询速度快(注意:是根据索引查询数据快),删除效率(可能需要把后面很多的数据进行前移)和增加效率极低也可能(可能需要数据前移或扩容)
②:LinkedList, 查询慢,增删相对较快(基于节点),可以查询链表的特点
应用场景:
ArrayList:
需要频繁访问列表元素,
列表大小变化不大,
作为其他集合的底层实现
LinkedList:
频繁的元素插入和删除操作,
作为栈、队列或双向队列的实现: LinkedList 提供了从列表两端插入和删除元素的方法(addFirst(), addLast(), removeFirst(), removeLast()),它非常适合用作栈(后进先出)、队列(先进先出)或双向队列的实现。
内存使用优化:在内存使用方面,如果列表的初始大小未知,或者预期会有很大的变化,LinkedList 可能比 ArrayList 更节省空间,因为 ArrayList 在扩容时可能会分配比实际需要更多的内存空间。
迭代器遍历中的删除操作

Set<E>

        set集合整体特点:无序,不重复,无索引

        但根据实现类的不同,不同的实现类也会有各自的特点:

        HashSet : 无序、不重复、无索引。
        LinkedHashSet:有序、不重复、无索引。
        TreeSet:排序、不重复、无索引。

        应用场景:

        HashSet : 去重,快速查找,集合运算
        LinkedHashSet:保持插入顺序,去重并保留顺序
        TreeSet:去重并排序、范围查找。

二,Map集合

Map<K,V>  
├── HashMap<K,V>  
│   └── LinkedHashMap<K,V>  
└── TreeMap<K,V>  

  注意:Map系列集合的特点都是由键决定的,值只是一个附属品,值是不做要求的

  特点:

  HashMap: 元素按照键是无序,不重复,无索引,值不做要求。
  LinkedHashMap: 元素按照键是有序,不重复,无索引,值不做要求。
  TreeMap:元素按照建是排序,不重复,无索引的,值不做要求。

另一个重要知识点:HashMap底层原理,这里不多作解释,可以自行查阅资料

应用场景:

HashMap: 数据索引和快速查找:
缓存机制:HashMap可以被用作缓存的实现方式,将计算结果缓存在HashMap中,当需要使用时,可以快速获取结果。
键值对存储
LinkedHashMap: 保持元素顺序,有序映射表,LRU缓存(最近最少使用)
TreeMap:需要排序的场景,高效的插入和删除,区间查找等。

 
      

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值