码迷,mamicode.com
首页 > 其他好文 > 详细

Set,List和Map

时间:2014-07-15 23:35:32      阅读:294      评论:0      收藏:0      [点我收藏+]

标签:style   java   color   strong   io   cti   

java的集合一般指的就是java.util.Collection的子类。

java的映射一般指的就是java.util.Map的子类。

 

我们没有必要去看所有的API,但是基本的方法还是应该知道的。

集合中包含的方法:

  • size()
  • isEmpty()
  • contains(Object)
  • iterator()
  • toArray()
  • toArray(T[])
  • add(E)
  • remove(Object)
  • containsAll(Collection<?>)
  • addAll(Collection<? extends E>)
  • removeAll(Collection<?>)
  • retainAll(Collection<?>)
  • clear()
  • equals(Object)
  • hashCode()

映射中包含的方法:

  • size()
  • isEmpty()
  • containsKey(Object)
  • containsValue(Object)
  • get(Object)
  • put(K, V)
  • remove(Object)
  • putAll(Map<? extends K, ? extends V>)
  • clear()
  • keySet()
  • values()
  • entrySet()

Collection的知名子接口:List<E>,Set<E>

Collection的知名实现类:AbstractCollection<E>

List的特点:元素有顺序的,且元素可以重复,允许null作为元素

List<E>的知名实现类:AbstractList<E>

List<E>的著名实现类:ArrayList<E>,Vector<E>,LinkedList<E>

ArrayList:最基本的List的实现,非线程安全的。

Vector:跟ArrayList很相似,但是他是线程安全的,操作较慢。

LinkedList:比较先进的List,它能够快速的插入和移除一个元素,但是查找一个元素比较慢。

 

Set的特点:元素是无顺序的,元素不可以重复,允许null作为元素

应该这么理解:

无序,当遍历一个Set的时候,得到的顺序跟插入时的顺序不一样,叫做无序;

不可重复,并不是说插入两个相同元素会报错,而只是当Set中已经包含一个相同元素的时候,add方法返回值为false。

所以说,第一个null可以插进去,第二个null就放不进去了。

另外,相不相等Set判断的基准是equals,而不是==。

Set<E>的著名实现类:HashSet<E>,LinkedHashSet<E>,TreeSet<E>

HashSet:元素存放的位置与hashCode相关,如果hashCode相同(一般这个时候equals也是相同的)则不插入这个元素,否则按照某些规则插入到某些位置。

LinkedHashSet:跟HashSet基本相同,不过它能够记录元素插入的顺序。它插入元素的时候开销较HashSet要大。

TreeSet:插入其中的元素在遍历的时候会按照升序排列好,从小到大。但是插入到这个Set中的对象必须实现Compareable接口

 

从上面的总结可以看出来List跟Set很相似。

但是据测试,Set比List要高效一些。

 

Map的著名实现类:HashMap<K, V>,Hashtable<K, V>,LinkedHashMap<K, V>,TreeMap<K, V>

HashMap:非线程安全的,相对高效,允许null键,null值。

Hashtable:线程安全的,相对低效,不允许null键,不允许null值。

LinkedHashMap:非线程安全的,它比HashMap先进一些,能够保证遍历的时候的顺序是插入时候的顺序。其它的相同。他是HashMap的子类。

TreeMap:插入其中的元素在遍历的时候会按照键的升序排列好,从小到大。但是插入到这个Map中的键的对象必须实现Compareable接口

HashMap中的key是唯一的,如果put进去的键跟已经存在的键相同了的话,会把原来的覆盖掉,这一点儿跟Set相似。

Set,List和Map,布布扣,bubuko.com

Set,List和Map

标签:style   java   color   strong   io   cti   

原文地址:http://www.cnblogs.com/voctrals/p/3841327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!