标签:style java color strong io cti
java的集合一般指的就是java.util.Collection的子类。
java的映射一般指的就是java.util.Map的子类。
我们没有必要去看所有的API,但是基本的方法还是应该知道的。
集合中包含的方法:
映射中包含的方法:
Collection的知名子接口:List<E>,Set<E>
Collection的知名实现类:AbstractCollection<E>
List<E>的知名实现类:AbstractList<E>
List<E>的著名实现类:ArrayList<E>,Vector<E>,LinkedList<E>
ArrayList:最基本的List的实现,非线程安全的。
Vector:跟ArrayList很相似,但是他是线程安全的,操作较慢。
LinkedList:比较先进的List,它能够快速的插入和移除一个元素,但是查找一个元素比较慢。
应该这么理解:
无序,当遍历一个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相似。
标签:style java color strong io cti
原文地址:http://www.cnblogs.com/voctrals/p/3841327.html