List/Map/Set

1、List和Set 都是实现了Collection接口,List和Set区别主要在于,list可以添加重复值,实现除了Collection里定义的一些方法(如get),list操作方便,可随机取值,而set如果要取值只能调用iterator方法来遍历值,速度比list要快;

list的实现类主要是ArrayList、LinkList、Vector(现在基本没人用),ArrayList是数组实现的List,在查询上比LinkedList快,LinkedList由于其本身的双向链表结构就决定了其在删除和添加上有了一定的优势,知道这一点,在选择的时候应该不难了。

list数据同步是个很大的问题,可以采用Collections.unmodifiableList(list)设成不可修改,或者list.iterator()方法来方法数据,这个时候在往List添加数据就能抛出异常;或者再设置这个属性本身加一下限制;


2、Map采用的是键值对存储方式,和之前的两个基本没什么关联,性能是Map最大一个问题,由于Map采用的是比较特殊hash算法,在查找的时候根据生成的这个hash code,可以在特定区域内进行查询,相比ArrayList一个个的查找肯定是快多了。

Map的实现类主要有HashMap、TreeMap、HashTable,HashMap是基于hash表实现,存储数据时无序性的,线程是不安全的,HashMap是取代Hashtable实现的,但是Hashtable他的特点是线程安全的,TreeMap是保存的是有序数据,线程是不安全的,如果需要线程安全的TreeMap,可以在声明的时候加上Collections.synchronizedMap(new TreeMap());
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章