Java集合之Set  List   Map

 

 

概述如下

List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口

List下有ArrayList,Vector,LinkedList
Set下有HashSet,LinkedHashSet,TreeSet
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap

Java集合之 Set && List && Map

Java集合之 Set && List && Map

 分

List:存储单列数据的集合,存储的数据是有顺序的,并且值允许重复;

List接口有三个实现类:
1 LinkedList
基于链表实现,链表内存是散列的,增删快,查找慢;
2 ArrayList
基于数组实现,非线程安全,效率高,增删慢,查找快;
3 Vector
基于数组实现,线程安全,效率低,增删慢,查找慢;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Set是存储单列数据的集合  存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的

1 HashSet
底层是由 Hash Map 实现,不允许集合中有重复的值,使用该方式时需要重写 equals()和 hash Code()方法;
2 LinkedHashSet
继承于 HashSet,同时又基于 LinkedHashMap 来进行实现,底层使用的是 LinkedHashMap

3 TreeSet的主要功能用于排序
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Map是存储键值对这样的双列数据的集合;存储的数据是无序的,键是不允许重复的,值是允许重复的;

1 HashMap
基于 hash 表的 Map 接口实现,非线程安全,高效,支持 null 值和 null
键;
2 HashTable
线程安全,低效,不支持 null 值和 null 键;
3 LinkedHashMap
是 HashMap 的一个子类,保存了记录的插入顺序;
4 TreeMap 接口
TreeMap,能够把它保存的记录根据键排序,默认是键值的升序排序


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 使用时机

  1. 如果你经常会使用索引来对容器中的元素进行访问,那么 List 是你的正确的选择。如果你已经知道索引了的话,那么 List 的实现类比如 ArrayList 可以提供更快速的访问。
  2. 如果你想容器中的元素能够按照它们插入的次序进行有序存储,那么还是 List,因为 List 是一个有序容器,它按照插入顺序进行存储。
  3. 如果你想保证插入元素的唯一性,也就是你不想有重复值的出现,那么可以选择一个 Set 的实现类,比如 HashSet、LinkedHashSet 或者 TreeSet。所有 Set 的实现类都遵循了统一约束比如唯一性,而且还提供了额外的特性比如 TreeSet 还是一个 SortedSet,所有存储于 TreeSet 中的元素可以使用 Java 里的 Comparator 或者 Comparable 进行排序。LinkedHashSet 也按照元素的插入顺序对它们进行存储。
  4. 如果你以键和值的形式进行数据存储那么 Map 是你正确的选择。你可以根据你的后续需要从 Hashtable、HashMap、TreeMap 中进行选择。

 

文章参考

[1]:https://blog.csdn.net/yangxingpa/article/details/81023138

[2]:  https://blog.csdn.net/zhangqunshuai/article/details/80660974

[3]:   https://blog.csdn.net/defonds/article/details/47951103

 

 

相关文章: