黑马程序员-java基础之Map集合
来源:互联网 发布:gta5n卡优化设置 编辑:程序博客网 时间:2024/05/09 18:52
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
一.TreeSet
1.什么是TreeSet
TreeSet是一种可以指定顺序的Set集合, 指定顺序的方式有两种: 自然顺序(Comparable), 比较器(Comparator)
2.Comparable
在要放入TreeSet集合的类上实现Comparable接口, 重写compareTo()方法, 对象存入TreeSet的时候就会按照compareTo()方法排序
3.Comparator
如果两个TreeSet存储同一类型对象, 需要使用不同顺序, 那么Comparable接口就无法满足这样的需求了, compareTo()方法只有一个, 无法定义两种比较方式.
如果不希望TreeSet按照Comparable的顺序排序, 可以在创建TreeSet的时候, 在构造函数中传入一个比较器Comparator.
创建TreeSet对象时, 构造函数可以接收一个Comparator类型的对象
由于Comparator是一个接口,我们可以自定义一个Comparator类的子类, 重写compare()方法
一旦构造函数中传入了Comparator, TreeSet将不再按照Comparable中的顺序排序, add()方法执行时自动按照Comparator的顺序排序
二.集合分类
Collection: 单列集合, 一次存一个对象
List: 可重复, 有索引
ArrayList: 数组实现, 查找快, 增删慢
LinkedList: 链表实现, 增删快, 查找慢
Vector: 原理和ArrayList相同, 线程安全, 效率较低
Stack: 栈, 先存的对象最后才能被取出
Set: 不重复, 无索引
HashSet: 使用哈希算法, 去重复, 速度快.
TreeSet: 使用二叉树算法, 按照指定顺序排序. 指定顺序的方式有两种: 自然顺序, 比较器
LinkedHashSet: HashSet的子类, 也是使用哈希算法, 但可以保留存储顺序.
Map: 键值对, 一次存两个对象
HashMap、TreeMap
三.Map集合
1.什么是Map集合
Map集合用来存储键值对, 每次存储2个对象, 一个键一个值, 可以根据键查找值, 键必须唯一.
2.Map集合常用方法
V put(K key, V value)
存储一个键值对, 如果键在集合中存在, 值将会覆盖原有值, 并且返回原有值.
V get(Object key)
根据键获取值, 如果不存在, 返回null
V remove(Object key)
根据键删除值, 并将值返回, 如果不存在, 返回null
boolean containsKey(Object key)
判断指定的键对象是否存在
3.HashMap集合的遍历由于Map无法用迭代器迭代,所以先用keySet()方法获得键值对 象,再通过键值对象获取到相应值。
keySet:
Map集合的keySet()方法可以得到一个所有键对象组成的Set集合
遍历这个Set集合可以得到每一个键对象
再根据键对象即可获取值
Set<String> set = map.keySet();
for (String str : set) {
System.out.println(str + ":" + map.get(str));
}
entrySet:
Map集合的entrySet()方法可以得到一个所有Entry对象(键值对)组成的Set
遍历这个Set集合可以得到每一个Entry对象
再使用Entry的getKey()方法和getValue()方法获取键和值
Set<Entry<String, Integer>> set = map.entrySet();
for (Entry<String, Integer> e : set) {
System.out.println(e.getKey() + ":" + e.getValue());
}
HashMap存储和查找原理:
存储:HashMap存储一个键值对的时候, 先会调用键对象的hashCode()方法得 到哈希吗,然后在集合中查找是否有哈希值相同的键对象,如果没有哈希值相同的 键对象, 直接将键值对存入,如果有哈希值相同的键对象, 逐个和这些键对象进 行equals()方法比较,比较的结果为false就将键值对存入,比较的结果为true 则用新的值覆盖原有值。
查找:HashMap在根据指定的键对象获取值的时候, 先对键对象调用 hashCode()方法, 得到哈希值然后在集合中查找哈希值相同的对象, 逐个 equals()方法比较找到equals()结果为true的键值对, 将值返回。
4.Map集合的常用实现类
HashMap: 使用哈希算法对键对象去重复
TreeMap: 使用二叉树算法对键对象排序
存储和查找:TreeMap在存储键值对的时候, 会调用键对象的compareTo()方法 和集合中其他的键对象进行比较, 根据比较结果以二叉树形式存储,如果 TreeMap创建的时候在构造函数中传入了比较器, 那么存储顺序以比较器为 准。
LinkedHashMap: HashMap的子类, 去重复的同时保留存储顺序
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重复. 线程 安全, 效率略低. 键和值都不允许为null
Properties: 键和值都是String, 用来存储一些配置项
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
一.TreeSet
1.什么是TreeSet
TreeSet是一种可以指定顺序的Set集合, 指定顺序的方式有两种: 自然顺序(Comparable), 比较器(Comparator)
2.Comparable
在要放入TreeSet集合的类上实现Comparable接口, 重写compareTo()方法, 对象存入TreeSet的时候就会按照compareTo()方法排序
3.Comparator
如果两个TreeSet存储同一类型对象, 需要使用不同顺序, 那么Comparable接口就无法满足这样的需求了, compareTo()方法只有一个, 无法定义两种比较方式.
如果不希望TreeSet按照Comparable的顺序排序, 可以在创建TreeSet的时候, 在构造函数中传入一个比较器Comparator.
创建TreeSet对象时, 构造函数可以接收一个Comparator类型的对象
由于Comparator是一个接口,我们可以自定义一个Comparator类的子类, 重写compare()方法
一旦构造函数中传入了Comparator, TreeSet将不再按照Comparable中的顺序排序, add()方法执行时自动按照Comparator的顺序排序
二.集合分类
Collection: 单列集合, 一次存一个对象
List: 可重复, 有索引
ArrayList: 数组实现, 查找快, 增删慢
LinkedList: 链表实现, 增删快, 查找慢
Vector: 原理和ArrayList相同, 线程安全, 效率较低
Stack: 栈, 先存的对象最后才能被取出
Set: 不重复, 无索引
HashSet: 使用哈希算法, 去重复, 速度快.
TreeSet: 使用二叉树算法, 按照指定顺序排序. 指定顺序的方式有两种: 自然顺序, 比较器
LinkedHashSet: HashSet的子类, 也是使用哈希算法, 但可以保留存储顺序.
Map: 键值对, 一次存两个对象
HashMap、TreeMap
三.Map集合
1.什么是Map集合
Map集合用来存储键值对, 每次存储2个对象, 一个键一个值, 可以根据键查找值, 键必须唯一.
2.Map集合常用方法
V put(K key, V value)
存储一个键值对, 如果键在集合中存在, 值将会覆盖原有值, 并且返回原有值.
V get(Object key)
根据键获取值, 如果不存在, 返回null
V remove(Object key)
根据键删除值, 并将值返回, 如果不存在, 返回null
boolean containsKey(Object key)
判断指定的键对象是否存在
3.HashMap集合的遍历由于Map无法用迭代器迭代,所以先用keySet()方法获得键值对 象,再通过键值对象获取到相应值。
keySet:
Map集合的keySet()方法可以得到一个所有键对象组成的Set集合
遍历这个Set集合可以得到每一个键对象
再根据键对象即可获取值
Set<String> set = map.keySet();
for (String str : set) {
System.out.println(str + ":" + map.get(str));
}
entrySet:
Map集合的entrySet()方法可以得到一个所有Entry对象(键值对)组成的Set
遍历这个Set集合可以得到每一个Entry对象
再使用Entry的getKey()方法和getValue()方法获取键和值
Set<Entry<String, Integer>> set = map.entrySet();
for (Entry<String, Integer> e : set) {
System.out.println(e.getKey() + ":" + e.getValue());
}
HashMap存储和查找原理:
存储:HashMap存储一个键值对的时候, 先会调用键对象的hashCode()方法得 到哈希吗,然后在集合中查找是否有哈希值相同的键对象,如果没有哈希值相同的 键对象, 直接将键值对存入,如果有哈希值相同的键对象, 逐个和这些键对象进 行equals()方法比较,比较的结果为false就将键值对存入,比较的结果为true 则用新的值覆盖原有值。
查找:HashMap在根据指定的键对象获取值的时候, 先对键对象调用 hashCode()方法, 得到哈希值然后在集合中查找哈希值相同的对象, 逐个 equals()方法比较找到equals()结果为true的键值对, 将值返回。
4.Map集合的常用实现类
HashMap: 使用哈希算法对键对象去重复
TreeMap: 使用二叉树算法对键对象排序
存储和查找:TreeMap在存储键值对的时候, 会调用键对象的compareTo()方法 和集合中其他的键对象进行比较, 根据比较结果以二叉树形式存储,如果 TreeMap创建的时候在构造函数中传入了比较器, 那么存储顺序以比较器为 准。
LinkedHashMap: HashMap的子类, 去重复的同时保留存储顺序
Hashtable: 和HashMap原理相同, 都是使用哈希算法去重复. 线程 安全, 效率略低. 键和值都不允许为null
Properties: 键和值都是String, 用来存储一些配置项
---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
- 黑马程序员-java基础之Map集合
- 黑马程序员 java基础之Map集合
- 黑马程序员java基础之Map集合
- 黑马程序员----java基础之Map集合
- 黑马程序员-------Java基础-------集合之Map
- 黑马程序员——Java基础之Map集合
- 黑马程序员——JAVA基础之Map集合
- 黑马程序员 Java基础 集合框架之Map
- 黑马程序员——java基础之Map集合
- 黑马程序员:Java基础总结----Map集合
- 黑马程序员---Java基础---Map集合
- 黑马程序员 java基础--map集合总结
- 黑马程序员----------------java基础-----------------Map集合
- 黑马程序员-Java基础:集合(Map)
- 黑马程序员-java基础-Map集合
- 奋斗黑马程序员----Java之Map集合
- 黑马程序员-java集合笔记之map
- 黑马程序员java之集合框架Map
- [set]hdu 2275 Kiki & Little Kiki 1
- lua—将一张table里的值插入另一张表,包含新的key值
- linux下挂载移动硬盘(ntfs格式)
- 什么是busybox
- SQL Server中DateTime格式转换
- 黑马程序员-java基础之Map集合
- 新的一天,心的开始
- Python中文全攻略 中文乱码 输出中文乱码 .
- winsock i/o方法
- socket
- iPhone核心应用程序的生命周期与委托
- 改变自己
- Apache POI 操纵 Excel 自动换行 HeaderStyle DataStyle
- android子菜单&&组菜单