`

JAVA常用的集合以及介绍(应重点复习)

 
阅读更多
-----------------------------------
1. 常用的集合以及介绍:(应重点复习)
常用集合set、map、list
set、map是collection接口的子接口
set接口的实现类:HashSet、TreeSet
List接口的实现类:ArrayList、linkedList
Map接口的实现类:HashMap、TreeMap、Hashtable。
   ArrayList和linkedList的区别(略)
HashMap、HashTable区别(略)

-----------------------------------
1、常用集合类的继承结构如下:
Collection<--List<--Vector
Collection<--List<--ArrayList
Collection<--List<--LinkedList
Collection<--Set<--HashSet
Collection<--Set<--HashSet<--LinkedHashSet
Collection<--Set<--SortedSet<--TreeSet
Map<--SortedMap<--TreeMap
Map<--HashMap

2、 List总结:

所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ]
所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]
所有的List中可以有null元素,例如[ tom,null,1 ]
基于Array的List(Vector,ArrayList)适合查询,而LinkedList 适合添加,删除操作.



3、Set是一种不包含重复的元素的无序Collection。

HashSet:
虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看HashSet的add(Object obj)方法的实现就可以一目了然了。也是为什么在Set中不能像在List中一样有重复的项的根本原因,因为HashMap的key是不能有重复的。

LinkedHashSet:
HashSet的一个子类,一个链表。

TreeSet:
SortedSet的子类,它不同于HashSet的根本就是TreeSet是有序的。它是通过SortedMap来实现的。

Set总结:
Set实现的基础是Map(HashMap)
Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象.

4、Map有两种比较常用的实现:HashMap和TreeMap。
HashMap也用到了哈希码的算法,以便快速查找一个键.

TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。

键和值的关联很简单,用put(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object
key)可得到与此key对象所对应的值对象。

总结:

1.ArrayList: 元素单个,效率高,多用于查询
2.Vector: 元素单个,线程安全,多用于查询
3.LinkedList:元素单个,多用于插入和删除

Set基于HashMap,无重复,可以为Null;
4.HashMap: 元素成对,元素可为空
5.HashTable: 元素成对,线程安全,元素不可为
6.TreeMap和TreeSet的数据都是有序的。

==================================================================
ArrayList不能在循环中remove:
ArrayList不能在循环中remove,例如:
for(PlaneInfo obj : planeList){
	log.info("!"+obj.getFlightBatchDate()+"-"+obj.getLowprPrice());
	if("".equals(obj.getLowprPrice()) || "0".equals(obj.getLowprPrice())){
		planeList.remove(obj);
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics