黑马程序员技术交流社区

标题: 【哈尔滨校区】集合的体系与使用 [打印本页]

作者: 樊祺    时间: 2017-12-13 12:26
标题: 【哈尔滨校区】集合的体系与使用
集合的体系结构:
由于不同的数据结构, Java为我们提供了不同的集合,但是不同的集合他们的功能都是相似,不断的向上提取,将共性抽取出来,这就是集合体系结构形成的原因。
体系结构:
         Collection   单列集合顶层接口
                  List   有索引,可以重复,存取有序
                          ArrayList   数组    数组:查询快,增删慢。
                          LinkedList          链表    链表:查询慢,增删快.
                          //Vector
                  Set            没有索引,元素唯一,存储无序
                          HashSet
                                   LinkedHashSet元素唯一,存取有序
Map  双列集合顶层接口
                  HashMap 键值对,键唯一,没有索引,存取无序
                           LinkedHashMap 存取有序
集合体系中每层特有的方法
Collection
                  booleanadd(Object e) 添加元素
                  voidclear()               清空元素
                  booleancontains(Object o) 判断集合中是否包含指定的元素
                  booleanisEmpty()  判断集合是否为空
                  booleanremove(Object o)     删除指定的元素
                  intsize()                    获取集合的长度
                  Object[]toArray()   将集合转换成Object类型的数组
                  Iteratoriterator() 获取迭代器对象
List
                  voidadd(int index, E element)  在指定位置上添加指定的元素
                  Eget(int index)        获取指定位置的元素
                  Eremove(int index)         删除指定位置的元素
                  Eset(int index, E element)     修改指定位置的元素
                  ListIterator<E>listIterator()获取列表迭代器
LinkedList
                  voidaddFirst(E e)  在最前面添加元素
                  voidaddLast(E e) 在最后面添加元素
                  EgetFirst()    获取第一个元素
                  EgetLast()     获取最后一个元素
                  EremoveFirst() 删除第一个元素
                  EremoveLast()         删除最后一个元素
Hashset的唯一性原理
hashCode方法:
                          不重写,Object中。返回的是该对象的内存地址。
                          重写,如何重写?
                                   保证相同成员变量的对象的哈西值相等的。
                                   尽量保证不同成员变量的对象的哈希值不同。
                                   操作:使用Eclipse生成。
                  equals方法:
                          不重写,Object中。比较的是两个对象的地址值。
                          重写,如何重写?
                                   比较两个对象的每一个成员变量的值。
                                   如果都相同则两个对象相同,如果有不同的,两个对象就不同。
   规则:新添加到HashSet集合的元素都会与集合中已有的元素一一比较
        首先比较哈希值(每个元素都会调用hashCode()产生一个哈希值)
             如果新添加的元素与集合中已有的元素的哈希值都不同,新添加的元素存入集合
             如果新添加的元素与集合中已有的某个元素哈希值相同,此时还需要调用equals(Object obj)比较
                   如果equals(Object obj)方法返回true,说明新添加的元素与集合中已有的某个元素的属性值相同,那么新添加的元素不存入集合
                   如果equals(Object obj)方法返回false, 说明新添加的元素与集合中已有的元素的属性值都不同, 那么新添加的元素存入集合
Map 双列集合顶层接口               
                  使用map集合存储自定义对象作为key,如何保证元素唯一?
                  重写自定义类的hashCode方法和equals方法。
                  
                  Vput(K key,V value) 添加元素,返回被覆盖的value
                  Vget(K key) 根据键查找并返回对应的value
                  booleancontainsKey(K key) 判断集合中是否包含指定的键
                  booleancontainsValue(V value) 判断集合中是否包含指定的值
                  Set<K>keySet() 获取到map集合中所有的键
                  Collection<V>values() 获取到map集合中所有的值
                  Set<Entry<K,V>>entrySet() 获取到map集合中所有的键值对对象。
集合的遍历方式
         单列:
                  .转数组 Object[]toArray()
                  .迭代器
                          1.获取迭代器对象Iterator it = 集合.iterator();
                          2.使用while循环,如果有元素就获取,没有元素则停止循环
                                   while(it.hasNext()){
                                            System.out.println(it.next());//获取元素并打印
                                   }
                  .增强for
                          for(容器中元素的数据类型  变量名 : 容器名){
                                   //遍历出来的每一个元素会存储在这个变量名中。
                          }
         双列:
                  Map集合的遍历方式:
                          键找值:keySet()
                                   增强for
                                   迭代器
                          键值对:entrySet()
                                   增强for
                                   迭代器


作者: 870263491    时间: 2017-12-13 20:36
集合的大整理,很全面
作者: lin632854170    时间: 2017-12-13 20:36
一看就会想起以前的记忆了,条理明确,很整洁
作者: Vampire军哥    时间: 2017-12-13 20:42
集合总结的很详细,又复习一遍
作者: 刘汉国    时间: 2017-12-13 20:45
整理的挺好的,是时候在回去复习一遍了
作者: 小鹿哥    时间: 2017-12-13 20:46
大佬总结的很好 什么时候带小弟发发财啊
作者: 峨眉山吴彦祖    时间: 2017-12-13 20:51
温习了一下,很好的很全面。
作者: 为学日益者    时间: 2017-12-13 21:37
总结的很全面(手动点赞),谢谢分享
作者: 学员123    时间: 2017-12-13 21:59
方法都写到一起了
作者: 爱奋斗的桃花侠    时间: 2017-12-13 22:02
好久没用了,又重新回忆一遍,甚好
作者: 刘昌昊    时间: 2017-12-13 22:03
看完帖子又回忆了一遍
作者: cdreamx    时间: 2017-12-13 22:04
写的很全很棒
作者: 陈鑫-    时间: 2017-12-13 22:08
让我又温习了一边加深了印象
作者: Lust    时间: 2017-12-13 22:08
重新复习了一下集合,总结的很详细,好几天没有玩Java,有些都要忘掉了。
作者: demo_jean    时间: 2017-12-13 22:09
写的很好哇
作者: 潘慧峰    时间: 2017-12-13 22:09
成功的把自己忘记的回想起来了
作者: synchronize    时间: 2017-12-13 22:10
entryValue
作者: 骑士冈布奥    时间: 2017-12-13 22:15
每天看一帖,学习不犯愁
作者: 骑士冈布奥    时间: 2017-12-13 22:16
每天看一贴,学习不愁苦
作者: 恋爱不如敲代码    时间: 2017-12-13 22:16
集合忘得差不多了 这一回能捡起来一点
作者: 聆听者    时间: 2017-12-13 22:18
很实用啊,集合学到哪里都有用,必须好好学,扎扎实实的,谢谢整理
作者: nighhr    时间: 2017-12-13 22:19
怀旧了。。
作者: nighhr    时间: 2017-12-13 22:20
怀旧贴。。  挺不错的
作者: 天敬沅    时间: 2017-12-13 22:44
感谢,看了又复习一遍,非常受用
作者: 武来彬    时间: 2017-12-13 22:44
集合的方法整理的很全  
作者: weiyipeng123456    时间: 2017-12-13 22:47
学wb都快忘了别的了让我回忆回忆
作者: pyx0812    时间: 2017-12-13 22:52
看一遍复习一遍,总能发现新的问题
作者: ycbin    时间: 2017-12-13 22:54
很全面值得学习
作者: ycbin    时间: 2017-12-13 22:55
很全面值得学习
作者: JavaDeveloper    时间: 2017-12-13 23:11
非常的全面,常用的都能涉及到,以后忘了可以回来看看
作者: Zzz丶    时间: 2017-12-14 00:25
诶嘿?正好忘差不多了,这总结的时间真好
作者: 王瑞楠    时间: 2017-12-14 08:31
感谢同学又帮我们复习了一遍集合的部分方法和基础知识
作者: 呵呵哈哈256    时间: 2017-12-14 08:37
整的好!!
作者: 黑马与你同在    时间: 2017-12-14 12:48
集合是面试中常问的
作者: Lee0    时间: 2017-12-14 19:27
都快忘了集合怎么用了,正好复习了一波




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