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

  • 相关阅读:
    while,dowhile,for循环和forin
    position:fixed;支持ie6,清除e6下抖动。
    数组concat()和slice()方法
    函数内arguments.callee的用法
    [转]十天学习PHP之第六天(PHP)学会添加删除修改数据 (20091125 14:26)
    [转]十天学习PHP之第三天(PHP)学会构建数据库
    [转]十天学习PHP之第二天(PHP)掌握php的流程控制
    php集成软件VertrigoServ(PHP安装)
    [转]十天学习PHP之第一天(PHP)基础知识
    PHP入门
  • 原文地址:https://www.cnblogs.com/Rozdy/p/4616175.html
Copyright © 2011-2022 走看看