Java集合类学习总结

Java的集合类分为两个类型,Collection和Map,Collection又分为Set和List。

1. 集合类中元素是否相同

HashSet使用equals和HashCode两个函数共同决定

TreeSet使用comparable接口中的compareTo,或者comparator中的compare函数

ArrayList使用equals函数

HashMap中的key和HashSet相同,value使用equals函数

TreeMap中的key和TreeSet相同,value使用equals函数


2. 集合中是否可以包含null,或者重复的元素

HashSet 可以包含null,不能包含重复元素

TreeSet 同HashSet,可以包含一个null,加入第二个null会引发异常

ArrayList 可以包含null,也能包含重复元素

HashMap中的key和HashSet相同,value可以包含多个null

TreeMap中的key和TreeSet相同,value可以包含多个null


3. 关于contains和remove函数

HashSet,TreeSet,ArrayList 可以使用如下的函数来判断是否包含一个元素,或者删除一个元素

boolean contains(Object o)

boolean remove(Object o)


HashMap,TreeMap有如下函数:

boolean containsKey(Object key)

boolean containsValue(Object key)

boolean remove(Object key)


在这些函数的实现中,都需要调用equals方法,那么是调用参数的equals方法(用集合中元素为equals函数参数)呢,还是调用每个元素的equals方法呢?

答案是调用参数的equals方法。以remove方法的实现为例

  1. public boolean remove(Object o) {  
  2.     if (o == null) {  
  3.             for (int index = 0; index < size; index++)  
  4.         if (elementData[index] == null) {  
  5.             fastRemove(index);  
  6.             return true;  
  7.         }  
  8.     } else {  
  9.         for (int index = 0; index < size; index++)  
  10.         if (o.equals(elementData[index])) {  
  11.             fastRemove(index);  
  12.             return true;  
  13.         }  
  14.         }  
  15.     return false;  
  16.     } 

4. 集合类和Array

集合类Collection有Object[] toArray()函数,用于将集合转化为Array。

Arrays工具类提供了asList(Object... a)方法,用于将Array转化为ArrayList,注意这个是Arrays类的内部类,也继承自List,它的长度固定,和之前的ArrayList不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值