java容器

一、总体框架:

两个接口:Collection接口和Map接口


Set中存储元素无序,且唯一,相当于数学中的集合

Map接口中主要存储键-值对

二、Collection接口主要方法


注:1、容器类对象在调用remove()、contains()等方法需要对对象进行比较时,会涉及到equals()和hashCode()方法;

对于自定义的类型,需要重写equals()方法和hashCode()方法,以实现对象的相等规则。(相等的对象需要有相等的hashCode)

2、iterator()方法返回一个实现了Itarator接口的对象,Itarator对象称为迭代器。

       Itarator接口提供方法:

3、Set接口

Set接口两个容器类HashSet和TreeSet

对于HashSet只能通过add()加入不同元素,如果相同add()方法会返回false,且插入失败;如果不同插入成功,add()返回true。

Set接口方法如下:

4、List接口:有序,可重复

List接口有两个容器类ArrayList和LinkedList

LIst接口公共方法如下:

5、List的常用算法:

类java.util.Collections中提供了一些基于List的的常用方法:

这些算法实现这些容器中对象的比较,是因为这些容器类实现了java.lang.Comparable接口的public int comparable(Object obj)方法

6、总结

Array:读快改慢

Linked:改快读慢

Hash:两者之间

二、Map接口:用来存储键-值对

Map接口两个实现的容器类HashMap、TreeMap,Map接口主要方法如下:

注:Dictionary类有一个子类HashTable,该类与HashMap差别不大,主要差别如下:

(1)HashTable是线程安全的,而HashMap不是

HashMap要想实现线程安全:

1.1、Collections类中有一个synchronizedMap()方法返回一个同步版本的HashMap用于多线程的环境;

  public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m) {
        return new SynchronizedMap<K,V>(m);
  }

1.2、ConcurrentMap接口和它的一个实现类ConcurrentHashMap
   Java5中新增了ConcurrentMap接口(在java.util.concurrent包中)和它的一个实现类ConcurrentHashMap。ConcurrentHashMap提供了和Hashtable以及SynchronizedMap中所不同的锁机制。Hashtable中采用的锁机制是一次锁住整个hash表,从而同一时刻只能由一个线程对其进行操作;而ConcurrentHashMap中则是一次锁住一个桶。ConcurrentHashMap默认将hash表分为16个桶,诸如get,put,remove等常用操作只锁当前需要用到的桶。这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值