Java编程技术之浅析Java容器技术

Java容器

集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一.

 

或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词。因为这几乎是我们日常开发里接触最多和遇见最频繁的,以及与数据处理交互最多的Java对象类型。换句话说,就是我们与数据进行处理的数据对象存储模型。但是:

List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList] Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet] Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap]

Collection容器

 

 

 

Collection容器包含List和Set以及Queue子容器。

List接口

 

List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等

ArrayList[线程不安全]

  • ArrayList-uml结构图:

LinkedList

  • LinkedList-uml结构图:

Stack

  • Stack-uml结构图:

Vector

  • Vector-uml结构图:

Set容器

 

Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等

Queue容器

Map容器

 

Map是一个键值对集合,存储键、值和之间的映射。Key无序,唯一;value 不要求有序,允许重复。Map没有继承于Collection接口,从Map集合中时,只要给出键对象,就会返回对应的值对象。

在使用Java开发分布式系统以及应对高并发场景的情况,看得最多的就是在并发场景中切忌使用HashMap。也是最近几年面试热题之一,主要原因:

  • [1].在JDK1.8版本之前,并发场景使用HashMap会导致出现死循环,从而导致CPU使用率会居高不下,这主要是JDK在设计HashMap扩容机制的局限导致。
  • [2]在JDK1.8版本之后,虽然修复了HashMap扩容导致死循环的问题,但是在高并发场景下,依然会出现数据丢失以及不准确的情况发生。

Map的常用实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap以及Properties等

HashMap[线程不安全]

  • HashMap-uml结构图:

  • 线程不安全主要体现在下面两个方面:

[1].在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况 [2].在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况

  • HashMap的扩容条件:

HashMap有扩容机制,就是当达到扩容条件时会进行扩容: [1].当HashMap中的元素个数(size)超过临界值(threshold)时就会自动扩容。 [2].在HashMap中,threshold = loadFactor * capacity

TreeMap

  • TreeMap-uml结构图:

HashTable

  • HashTable-uml结构图:

ConcurrentHashMap[线程安全]

  • ConcurrentHashMap-uml结构图:

Properties

  • Properties-uml结构图:

Iterator容器


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值