五. Java集合概要

了解了Java内存相关的内容后,现在来简单介绍下Java的集合。

 

 

Set:不含有重复数据的集合。常用的对象HashSet,TreeSet,LinkedHashSet。HashSet拥有很好的性能,其数据是无序的。TreeSet的结构为红黑树,所以其数据是有序的,但不允许含有null。LinkedHashSet保持数据的插入顺序。

 

List:Java中常用的集合。常用的对象ArrayList,LinkedList,Vector。ArrayList多用于容量已知、随机读较多的场景。LinkedList多用于未知容量,随机写较多的场景。Vector是线程安全的。

 

Queue:多用于对数据进行FIFO(先进先出)队列的管理。常用的对象SynchronousQueue,LinkedBlockingQueue,DelayQueue。 SynchronousQueue是一个无容量的阻塞队列,每个插入操作必须等待其他线程的remove操作,反之亦然,它适合于handoff designs。DelayQueue一个元素在延迟一定时间后才被取出的阻塞队列。LinkedBlockingQueue常用的阻塞队列。

 

Deque:用于对数据进行FIFO(先进先出),LIFO(后进先出)双队列的管理。

 

Map:Java常用key/value数据结构。常用的对象ConcurrentHashMap, HashMap, Hashtable, LinkedHashMap, TreeMap。Hashtable可以说已被替换。ConcurrentHashMap用于线程安全的场景。LinkedHashMap保留了数据的插入顺序。TreeMap的key是有序的。

 

使用集合的经验:

  1. 容量确定时,一定初始化好起容量,这样可以避免集合的自动扩容。
  2. 注意集合的上限,一个是java本身int类型的限制,一个是jvm内存的限制。
  3. 集合线程安全针对的是集合结构变化时(add,delete,remove,put,resize操作),操作结果要符合预期。
  4. Jdk 1.8已经支持collection集合的聚集和并行操作(Aggregate Operations and Parallel).类似spark的RDD.这块很有意思,建议大家去看看。

 

关于集合的自动扩容算法等源码,网上以比比皆是,So,露巧不如藏拙。

转载于:https://www.cnblogs.com/seven-2017/p/7264339.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值