集合框架(总结)

集合框架:

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(掌握)

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

集合的嵌套遍历(理解)

 

posted @ 2018-05-23 20:20  要死要活的程序猿啊  阅读(272)  评论(0编辑  收藏  举报