zoukankan      html  css  js  c++  java
  • list、set、map的特点

    java 集合(list、set、map)的特点

    集合相关的类有一大堆,一般也只用到常用的方法增删改查,而且它它们的方法名也基本一样,所以一直都不知道什么时候用什么集合,

    今天趁有空特意从网上整理资料方便日后回忆。

    一、List:、有顺序以线性方式存储,可以存放重复对象

    线程安全方法:List list = Collections.synchronizedList(new LinkedList(...));

    LinkedList:双向链表实现存储  索引数据慢插入数度较快  线程不安全(比安全性能好)

    ArrayList:数组方式存储数据  索引数据快插入数据慢  线程不安全

    Vector:数组方式存储数据  索引数据快插入数据慢  线程安全

    Stack:继承自Vector,实现一个后进先出的堆栈

    二、Set:无顺序,不包含重复的元素

    HashSet:为快速查找设计的Set。存入HashSet的对象必须定义hashCode()。  

    TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。  

    LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。

    三、Map:键必须是唯一

    同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));

    Hashtable:基于散列表的实现  允许空键空值  线程安全

    HashMap:基于散列表的实现  允许空键空值  线程不安全  (与Hashtable基本一致)

    TreeMap: 基于红黑树数据结构的实现  不允许空键空值  线程不安全

    WeakHashMap:改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收。

    在除需要排序时使用TreeSet,TreeMap外,都应使用HashSet,HashMap,因为他们的效率更高。

    四、SparseArray<E>:采用了二分法方式存储数据(安卓的一个集合类)

    android系统建议我们用SparseArray<E>来代替HashMap<Integer, E>

    SparseArray的使用基本与List一样,在些不详细解说,大家可以看http://blog.csdn.net/xyz_fly/article/details/793194

    本文转自:http://www.cnblogs.com/Mr-Mo/p/4612769.html

  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/Rozdy/p/4616175.html
Copyright © 2011-2022 走看看