黑马程序员技术交流社区
标题: 【哈尔滨校区】集合的体系与使用 [打印本页]
作者: 樊祺 时间: 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 |