我们知道,在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