美文网首页
Java集合

Java集合

作者: 牡丹福 | 来源:发表于2018-03-12 15:40 被阅读0次

    四种体系:

    Set:无序不重复

    List:有序重复

    Map:有映射关系

    Queue:队列集合实现

    两个接口:Collection(list set queue)和Map(根接口)

    HashSet:不是同步;元素值可以是null。当向HashSet存入元素,调用该对象的hashCode()方法得到该对象的hashCode值,由值决定在在HashSet的存储位置。

    两个元素相等的标准:equals()方法返回true,hashCode()相等

    不要轻易修改HashSet的对象。

    LinkedHashSet是Hashet的子类,使用链表维护元素次序

    TreeSet是SortedSet接口的实现类,确保集合元素处于排序状态。只能添加同一种类型的对象

    当一个对象加入加入TreeSet集合时,调用该对象的compareTo(Object obj)方法与容器其他方法比较大小,然后根据红黑树结构找到存储位置,若相等,无法添加。返回0表示相等。

    EnumSet类

    各Set实现类的性能分析

    Hashset的性能优于TreeSet,除非需要一个保持排序的Set。遍历LinkedHashSet更快。

    EnumSet是所有Set中性能最好的,但只能保存同一个枚举类的枚举值作为集合元素

    这三个类都是线程不安全的,可以通过synchronizedSortedSet方法包装,在创建时进行。

    SortedSet s = Collections.synchronizedSortedSet(new TreeSet());

    List集合

    集合的每个元素都有对应的顺序索引。允许重复元素,默认按添加顺序设置索引。

    Void add (int index,Object element)

    Object get/remove(int index)

    List类的两个典型实现:ArrarList和Vector,都是基于数组实现,动态允许再分配。使用initialCapacity设置数组长度,超过时会自动增加。

    显著区别,ArrayList是线程不安全的

    ArrayKust LinkedList是线性表的典型实现,基于数组和链。LinkedList提供了双端队列、栈的功能。总体上A的性能好。遍历集合,A和V使用随机访问方法(get),L使用迭代器(iterator)

    Queue集合

    PriorityQueue按队列大小重新排序,而不是先进先出

    Map集合

    List有数字索引,Map用key索引。从源码上看,包装所有value为null的Map即可实现Set。

    HashSet和Hashtable(古老的类):

    Table线程安全,不能有key或value为null。Map允许有key或value为null

    判断key需要hashnode和equals。判断value只要equals

    相关文章

      网友评论

          本文标题:Java集合

          本文链接:https://www.haomeiwen.com/subject/xsenfftx.html