JAVA常用数据结构及其原理分析

我们知道,在java中包含了三个重要的接口:List(单纯的列表集合),Set(集合中的元素是唯一的),Map(以键值对的形式存储数据,其中的Key是唯一的)。


在集合中,提供了四种输出方式:

1.Iterator:最基本,最常用的迭代输出啦;

2.ListIterator:前缀加了个List,大家应该就知道,这个是针对List进行的输出;

3.foreach:个人比较偏爱的循环输出方式;

4.for循环:这个大家更不陌生了。

List集合接口

List接口的实现类:ArrayList、LinkedList

ArrayList:查询较多的情况下,建议将结果集放入到ArrayList中;

LinkedList:需要对结果集的数据进行操作(比如增删改)的情况下,可以将结果集放入到LinkedList中。

Map集合接口

Map接口的实现类:HashMap、HashTable、LinkedHashMap,TreeMap....

HashMap:最常用的Map集合,保存的是一组key、value结构的数据集合,因为通过key获取值,因此访问速度很快,但其内部的数据是无序的,而且允许有一个key为NULL的数据

HashTable:和HashMap相似,不同点在于它是线程安全的,同一时刻,只有一个线程可以对HashTable进行操作,所以效率比较低,不允许内部存在Key为NULL;

TreeMap:常用与排序,并且其中不允许出现Key为NULL.

常用类之间的区别:

Vector和ArrayList

1.最根本的区分是Vector由于是线程安全的,所以效率不高,ArrayList是非线程的,因此效率很高。

ArrayList和LinkedList

1.由于工作中查询业务数据的场景比较多,因此使用的ArrayList比较普遍;

2.对于随机访问List时,ArrayList由于LinkedList,因为检索时LinkedList要移动指针进行操作;

3.对于操作结果集,如果进行添加或者删除动作时,LinkedList性能略优于ArrayList,因为ArrayList要将操作数据的点以及以后的数据进行移动。

HashMap和HashTable

1.HashTable是线程安全的,即同步,HashMap是非线程安全的,不同步;

2.HashMap允许存在一个key为NULL的数据,HashTable中不允许出现为NULL的key

HashMap和TreeMap

1.HashMap是通过hashcode进行内容查找的,两个map中,元素一样,顺序不同的情况下,其hashcode()的值也是不同的;

2.TreeMap是有序的,因此对需要排序的结果集,当然使用的是TreeMap

阅读更多

没有更多推荐了,返回首页