• 集合框架(总结)


    集合框架:

    Collection(单列集合)

    |------List(有序,可重复)

    |------------ArrayList(数组,查询快,增删慢,不安全,效率高)

    |------------Vector(数组,查询快,增删慢,安全,效率低)

    |------------LinkedList(链表,查询慢,增删快,不安全,效率高)

    |------Set(无序,且唯一)

    |------------HashSet(哈希表,依赖hashCode()和equals())

                     执行顺序:首先判断hashCode()值是否相同

                           是:继续执行equals(),看其返回值是true,说明元素重复,不添加

                                                              false,就直接添加到集合。

                           否:就直接添加到集合。

                           自动生成hashCode()和equals()即可。

    |-----------------------LinkedHashSet(链表和哈希表,链表保证有序,哈希表保证唯一)

    |------------TreeSet(红黑树)

             如何保证元素唯一性呢?

                         根据比较的返回值是否是0来决定。

             如何保证元素的排序呢?

               两种方式:

                  自然排序(元素具备比较性)让元素所属的类实现Comparable接口。  

                  比较器排序(集合具备比较性)让集合接收一个Comparator实现类对象。

    Map(双列集合)

       1:Map集合的数据结构仅仅针对键有效,与值无关。

       2:存储的是键值对形式的元素,键唯一,值可重复。

    |------HashMap(哈希表,不安全,效率高)  --> 同HashSet

    |--------------LinkedHashMap  --> 同LinkedHashSet

    |------Hashtable(哈希表,安全,效率低)  --> 同HashMap

    |------TreeMap  --> 同TreeSet

    如何选择使用哪种集合?

    看具体需求!

      是否是键值对形式?

    |--------是:Map

          键是否需要排序?

    |----------------是:TreeMap

    |----------------否:HashMap

          不知道,就选择HashMap。

    |--------否:Collection

          要安全吗?

    |----------------是:Vector

    |----------------否:ArrayList或LinkedList

              增删多:LinkedList

              查询多:ArrayList

            不知道,就选择ArrayList

    集合常见方法及遍历方式:

    Collection:

    • add()
    • remove()
    • contains()
    • iterator()
    • size()

      遍历:

        增强for

        迭代器

        |--List

          get()

          遍历:普通for

        |--Set

    Map:

    • put()
    • remove()
    • containKey(),containsValue()
    • keySet()
    • get()
    • value()
    • entrySet()
    • size()

      遍历:

        根据键找值

        根据键值对对象分别找键和值

    ArrList,LinkedList,HashSet,HashMap(掌握)

      存储字符串和自定义对象数据并遍历。

    集合的嵌套遍历(理解)

  • 相关阅读:
    制作完整的java可执行文件
    做最好的自己
    hadoop安装&单机配置
    虚拟机中不能识别U盘的解决方案
    扩展的欧几里得&中国剩余定理
    Java基础知识
    [转载] vim+ctags+taglist+cscope+cppcomplete+global
    [转载] tar 备份时如何保持权限
    [转载] Python没有switch语句的解决方法
    Makefile中一些特殊符号的意义
  • 原文地址:https://www.cnblogs.com/crazypokerk/p/9079127.html
Copyright © 2020-2023  润新知