List,Set,Map 详解

作者: Allens_Jiang | 来源:发表于2018-02-09 17:46 被阅读159次
    老婆保佑,代码无BUG

    前言

    java语言,博大精深啊,好好撸一撸JAVA编程思想


    目录

    • 对比1: 是否实现Collection
    • 对比2:List 和Set对比
    • 对比3:ArrayList与LinkedList
    • 对比4:HashSet与Treeset
    • Collection接口的方法
    • iterator()方法

    对比

    对比1: 是否实现Collection

    类型 是否实现Collection
    Map NO
    List YES
    set YES

    对比2:List 和Set对比

    类型 元素可重复 是否有序 检索元素效率 删除和插入效率
    List YES YES
    set NO NO
    • Set:插入和删除不会引起元素位置改变。
    • List:和数组类似,List可以动态增长,因为会引起其他元素位置改变。

    对比3:ArrayList与LinkedList

    类型 查询效率 插入和删除操作效率
    Arraylist
    LinkedList
    • ArrayList是实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高(在内存里是连着放的)。因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。
    • LinkedList基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要等一个连续的地址,对于新增和删除操作add和remove,LinedList比较占优势。LinkedList 适用于要头尾操作或插入指定位置的场景,因为LinkedList要移动指针,所以查询操作性能比较低。

    对比4:HashSet与Treeset

    类型 算法 是否可以存放null 适用场景
    HashSet 哈希表 不允许 适用于Map中插入、删除和定位元素
    Treeset 二差树 只能放入一个null 适用于按自然顺序或自定义顺序遍历键(key)。

    Collection接口的方法

    方法 说明
    boolean add(Object o) 向集合中加入一个对象的引用
    void clear() 删除集合中所有的对象,即不再持有这些对象的引用
    boolean isEmpty() 判断集合是否为空
    boolean contains(Object o) 判断集合中是否持有特定对象的引用
    Iterartor iterator() 返回一个Iterator对象,可以用来遍历集合中的元素
    boolean remove(Object o) 从集合中删除一个对象的引用
    int size() 返回集合中元素的数目
    Object[] toArray() 返回一个数组,该数组中包括集合中的所有元素

    Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。

    方法 说明
    hasNext() 判断集合中元素是否遍历完毕,如果没有,就返回true
    next() 返回下一个元素
    remove() 从集合中删除上一个有next()方法返回的元素。

    相关文章

      网友评论

        本文标题:List,Set,Map 详解

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