zoukankan      html  css  js  c++  java
  • collection各实现类用途建议

    Collection接口:集合,下面有两大分支,List和Set,期中List是有序队列,元素可以重复,Set是集合,元素不能重复。

    AbstractCollection抽象类:实现了Collection大部分的接口。
    AbstractList抽象类:继承了AbstractCollection抽象类。AbstractSet抽象类:同样继承了AbstractCollection抽象类。
    List和Set实现类都分别继承了AbstractList和AbstractSet抽象类。


    List类的实现类常用的是LikedList、ArrayList、Vector和Stack;
    LinkedList:继承了AbstractSequence,是一个双向链表。可以当做堆栈、队列或者双向队列使用,支持序列化。
    ArrayList:是一个数组队列,相当于动态数组,提供了添加、修改、删除和遍历功能,是非线程安全的。建议单线程使用ArrayList,多线程使用Vector或者CopyOnWriteArrayList。
    Vector:是一个矢量队列,与ArrayList类似,但是属于线程安全的。
    Stack:栈,先进后出,继承于Vector。


    ArrayList和LinkedList区别
    ArrayList可以看做数组,可以快速随机访问,插入对象的速度慢,整个数组要后移操作复杂。
    LinkedList可以看做链表,插入删除数据相当快速方便,不能随机访问,只能遍历查找,随机读取速度慢。

    Map接口:映射接口,Map中存储的内容是键值对(key—value)
    Map接口的实现类:TreeMap、HashMap、WeakHashMap和HashTable
    TreeMap:有序的键值对,通过红黑树实现的,可用于给Map集合中的键进行排序,非线程安全。
    HashMap:是基于“拉链法”实现的散列表,键值对,但不保证次序,非线程安全。
    Hashtable:是基于“拉链法”实现的散列表,线程安全
    WeakHashMap:基于“拉链法”实现的散列表,弱键。当“弱键”被GC回收时,它对应的键值对也会被从WeakHashMap中删除;而HashMap中的键是强键

    Set接口的实现类有HashSet类和TreeSet类

    HashSet类:依赖于HashMap实现,HashSet元素也是无序的。

    TreeSet类:依赖于TreeMap实现,TreeSeet元素是有序的。

  • 相关阅读:
    单体架构还是微服务架构,这是个问题?
    ASP.NET 5中的ASP.NET Bundles跑到哪里去了?
    如何在ASP.NET MVC和EF中使用AngularJS
    在VS 2015中边调试边分析性能
    C#中的Infinity有个小坑
    利用Roslyn构建一个简单的C#交互脚本引擎
    移动端跨平台开发干货分享
    在ASP.NET 5中读取配置文件
    5个让你的SaaS应用大卖的技巧
    大数据技术之_19_Spark学习_08_Spark 机器学习_01_机器学习概述 + 机器学习的相关概念 + 算法常用指标
  • 原文地址:https://www.cnblogs.com/run127/p/5547576.html
Copyright © 2011-2022 走看看