黑马程序员技术交流社区

标题: 关于List集合和Set集合 [打印本页]

作者: Bestwith    时间: 2016-5-2 22:13
标题: 关于List集合和Set集合
List集合和Set集合他们之间有什么区别,他们用法这么区分,分别代表什么尼
作者: liujian5461267    时间: 2016-5-3 00:26
本帖最后由 liujian5461267 于 2016-5-3 00:29 编辑

今晚通宵学习,加油!!!!!!!!!!!
作者: liujian5461267    时间: 2016-5-3 00:28
  1. 1:集合(自己补齐)
  2.         Collection(单列集合)
  3.                 List(有序,可重复)
  4.                         ArrayList
  5.                                 底层数据结构是数组,查询快,增删慢
  6.                                 线程不安全,效率高
  7.                         Vector
  8.                                 底层数据结构是数组,查询快,增删慢
  9.                                 线程安全,效率低
  10.                         LinkedList
  11.                                 底层数据结构是链表,查询慢,增删快
  12.                                 线程不安全,效率高
  13.                 Set(无序,唯一)
  14.                         HashSet
  15.                                 底层数据结构是哈希表。
  16.                                 哈希表依赖两个方法:hashCode()和equals()
  17.                                 执行顺序:
  18.                                         首先判断hashCode()值是否相同
  19.                                                 是:继续执行equals(),看其返回值
  20.                                                         是true:说明元素重复,不添加
  21.                                                         是false:就直接添加到集合
  22.                                                 否:就直接添加到集合
  23.                                 最终:
  24.                                         自动生成hashCode()和equals()即可
  25.                                        
  26.                                 LinkedHashSet
  27.                                         底层数据结构由链表和哈希表组成。
  28.                                         由链表保证元素有序。
  29.                                         由哈希表保证元素唯一。
  30.                         TreeSet
  31.                                 底层数据结构是红黑树。(是一种自平衡的二叉树)
  32.                                 如何保证元素唯一性呢?
  33.                                         根据比较的返回值是否是0来决定
  34.                                 如何保证元素的排序呢?
  35.                                         两种方式
  36.                                                 自然排序(元素具备比较性)
  37.                                                         让元素所属的类实现Comparable接口
  38.                                                 比较器排序(集合具备比较性)
  39.                                                         让集合接收一个Comparator的实现类对象
  40.         Map(双列集合)
  41.                 A:Map集合的数据结构仅仅针对键有效,与值无关。
  42.                 B:存储的是键值对形式的元素,键唯一,值可重复。
  43.                
  44.                 HashMap
  45.                         底层数据结构是哈希表。线程不安全,效率高
  46.                                 哈希表依赖两个方法:hashCode()和equals()
  47.                                 执行顺序:
  48.                                         首先判断hashCode()值是否相同
  49.                                                 是:继续执行equals(),看其返回值
  50.                                                         是true:说明元素重复,不添加
  51.                                                         是false:就直接添加到集合
  52.                                                 否:就直接添加到集合
  53.                                 最终:
  54.                                         自动生成hashCode()和equals()即可
  55.                         LinkedHashMap
  56.                                 底层数据结构由链表和哈希表组成。
  57.                                         由链表保证元素有序。
  58.                                         由哈希表保证元素唯一。
  59.                 Hashtable
  60.                         底层数据结构是哈希表。线程安全,效率低
  61.                                 哈希表依赖两个方法:hashCode()和equals()
  62.                                 执行顺序:
  63.                                         首先判断hashCode()值是否相同
  64.                                                 是:继续执行equals(),看其返回值
  65.                                                         是true:说明元素重复,不添加
  66.                                                         是false:就直接添加到集合
  67.                                                 否:就直接添加到集合
  68.                                 最终:
  69.                                         自动生成hashCode()和equals()即可
  70.                 TreeMap
  71.                         底层数据结构是红黑树。(是一种自平衡的二叉树)
  72.                                 如何保证元素唯一性呢?
  73.                                         根据比较的返回值是否是0来决定
  74.                                 如何保证元素的排序呢?
  75.                                         两种方式
  76.                                                 自然排序(元素具备比较性)
  77.                                                         让元素所属的类实现Comparable接口
  78.                                                 比较器排序(集合具备比较性)
  79.                                                         让集合接收一个Comparator的实现类对象
  80.         
  81. 2:到底使用那种集合(自己补齐)
  82.         看需求。
  83.         
  84.         是否是键值对象形式:
  85.                 是:Map
  86.                         键是否需要排序:
  87.                                 是:TreeMap
  88.                                 否:HashMap
  89.                         不知道,就使用HashMap。
  90.                         
  91.                 否:Collection
  92.                         元素是否唯一:
  93.                                 是:Set
  94.                                         元素是否需要排序:
  95.                                                 是:TreeSet
  96.                                                 否:HashSet
  97.                                         不知道,就使用HashSet
  98.                                        
  99.                                 否:List
  100.                                         要安全吗:
  101.                                                 是:Vector(其实我们也不用它,后面我们讲解了多线程以后,我在给你回顾用谁)
  102.                                                 否:ArrayList或者LinkedList
  103.                                                         增删多:LinkedList
  104.                                                         查询多:ArrayList
  105.                                                 不知道,就使用ArrayList
  106.                         不知道,就使用ArrayList
  107.                         
  108. 3:集合的常见方法及遍历方式
  109.         Collection:
  110.                 add()
  111.                 remove()
  112.                 contains()
  113.                 iterator()
  114.                 size()
  115.                
  116.                 遍历:
  117.                         增强for
  118.                         迭代器
  119.                         
  120.                 |--List
  121.                         get()
  122.                         
  123.                         遍历:
  124.                                 普通for
  125.                 |--Set
  126.         
  127.         Map:
  128.                 put()
  129.                 remove()
  130.                 containskey(),containsValue()
  131.                 keySet()获取所有键
  132.                 get()通过键找值
  133.                 value()获取所值的集合
  134.                 entrySet()获取所有键值对的集合
  135.                 size()
  136.                
  137.                 遍历:
  138.                         根据键找值
  139.                         根据键值对对象分别找键和值
  140.                        
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2