美文网首页程序员
你真的还记得Java数据结构吗?

你真的还记得Java数据结构吗?

作者: 小豪丶 | 来源:发表于2018-03-19 10:14 被阅读41次

数据结构

继承关系图
-- Collection <Interface>
    -- List <Interface>
        -- ArrayList
        -- Vector
        -- LinkedList
    -- Set <Interface>
        -- HashSet
            -- LinkedHashSet
        -- TreeSet
-- Map <Interface>
    -- HashMap
        -- LinkedHashMap
    -- TreeMap

Colletion

Collection是单列集合继承树中的根接口,有两大子接口List和Set。

List

List集合的特点:有序(存和取的顺序一致)、可重复

ArrayList

底层结构用数组实现,因此查询快,增删慢。
线程不安全,但效率高。

Vector

底层结构用数组实现,因此查询快,增删慢。
线程安全,但效率低。

LinkedList

底层结构用链表实现,因此查询慢,增删快。
线程不安全,但效率高。

Set

Set集合的特点:无序(存和取的顺序不一致)、不重复。

HashSet

HashSet每次调用add()的时候都要去重复元素。依赖于HashMap实现。
去重复元素方法:

    1. 先调用hashCode()得到hash值,比较hash值,如果没有相同的hash值则直接存储。
    2. 如果hash值相同时,则调用equal()方法比较。
    3. 如果返回true则不添加,如果返回false则将元素加入集合中。

LinkedHashSet

特点:怎么存的就怎么取。
继承自HashSet,为链表结构。

TreeSet

特点:二叉树结构,按照指定的方式进行排序。依赖于TreeMap实现。
比较要有个Comparator比较器或对象是实现了Comparable接口。

Map

双列集合的根接口。
put数据的时候,会返回被覆盖的value。如果第一次存储,返回null;第二次存储,覆盖前一次的值,并返回。

HashMap、LinkedHashMap、TreeMap

Map的数据结构集中在key。将value都变为空对象时,HashMap就变为HashSet了。

HashMap与Hashtable的区别

共同点:
    HashMap和Hashtable都是用哈希算法

不同点:
    1. Hashtable是JDK1.0版本出现的,同步(线程安全),效率低;
    HashMap是JDK1.2版本出现的,不同步(线程不安全),效率高。
    2. Hashtable存的键和值都不能为null,否则报NullPointerException;
    HashMap存的键和值都可以为null,保证代码可以继续执行。

Collection与Collections的区别

Collection是单列集合的根接口,Collections是List的一个工具集合,多为static方法。
除名字相似外并无可比性。

List中ArrayList、LinkedList、Vector的选择

1. 增删少、查询多,且为单线程 选ArrayList
2. 增删少、查询多,但为多线程 选Vector
3. 增删多、查询少 选LinkedList
4. 单线程,增删与查询都多 选ArrayList

相关文章

  • 你真的还记得Java数据结构吗?

    数据结构 Colletion List ArrayList Vector LinkedList Set HashS...

  • 匆匆那年的留学梦你还记得嘛

    还记得留学之前的种种吗?还记得留学之前那个天真的你,在父母呵护下长大的你吗?还记得把我们带出家园的飞机吗?飞出了家...

  • 解梦前,你需要了解的几个问题

    你经常做梦吗? 梦醒之后,你还记得自己做过的梦吗? 那些梦是否真的有预示的意义? 真的有人会不做梦吗? …… 关于...

  • 你还记得你曾经的追求与理想吗

    你还记得你小时候的理想吗? 你还记得你的追求是什么吗? 你还记得你之前有多知足吗? 你还记得起来吗? 还记得那时 ...

  • 是为人格?

    你还记得你答应过我的事情吗? 你还记得你当初是怎样对我许下的承诺吗? 你看看现在的你是什么样子? 你难道真的打算一...

  • 我们在粉色的海浪声中接了一个长长的吻

    你听到了吗? 听到了。 是我的心跳。 是的,很美。 很美? 嗯,很美。像海浪。 真的吗? 真的。 还记得吗?那时我...

  • 李冰

    伤害了我你真的心会痛吗 失去了我你可有泪流过吗 想到我时你会隐隐作痛吗 我的好你还记得吗 伤害了我你真的心会痛吗 ...

  • 你的婚礼:我怎么还是错过了爱了很久的你

    你还记得你的初恋吗? 你还记得你们是怎么认识的吗? 你还记得你为他做过些什么吗? 你还记得你喜欢了他多久吗? 你和...

  • 小诗(18)

    如果雨停了 你仍然满脸是水 那真的只是雨吗 如果梦醒了 你还记得梦里的一切 那真的只是梦吗

  • Java数据结构算法(二)栈和队列

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(三)树 Java数据结构算...

网友评论

    本文标题:你真的还记得Java数据结构吗?

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