鱼C论坛

 找回密码
 立即注册
查看: 2567|回复: 1

[学习笔记] Java-022集合框架之Map

[复制链接]
发表于 2018-12-26 22:32:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-12-26 22:32 编辑

1、Map简介
特点:
        ① 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
        ② Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。
        ③ 与Collection是平级接口。
Map集合方法:
1. 添加功能
V put(K key,V value) ------------->  添加元素。
                如果键是第一次存储,就直接存储元素,返回null.
                如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值.

2. 删除功能
void clear()   ----------------------->  移除所有的键值对元素
V remove(Object key)  ----------->  根据键删除键值对元素,并把值返回
3. 判断功能
boolean containsKey(Object key)  ---------->  判断集合是否包含指定的键
boolean containsValue(Object value) ------>  判断集合是否包含指定的值
boolean isEmpty()   --------------------------->  判断集合是否为空
4. 获取功能
Set<Map.Entry<K,V>> entrySet() -------->  返回此映射中包含的映射关系的 Set 视图。
V get(Object key) ---------------------------->  根据键获取值
Set<K> keySet()  ---------------------------->  获取集合中所有键的集合
Collection<V> values() --------------------->   获取集合中所有值的集合
5、长度功能
int size()  ------------------------------------->  返回集合中的键值对的对数
示例:
Map<String, String> map = new HashMap<String, String>();   // 创建集合对象
map.put('A', "Java");    // 创建元素并添加到集合
map.put('B', "C/C++");
map.put('C', "Python");
map.put('D', "PHP");
// map.clear();        // 移除所有的键值对元素
map.remove('A');    // 根据键删除键值对元素,并把值返回
map.containsKey('B');    // 判断集合是否包含指定的键
boolean isEmpty();         // 判断集合是否为空
map.size();    // 返回集合中的键值对的对数
System.out.println("map:" + map);   // 输出集合名称

map.get('C');  // 根据键获取值
Set<String> set = map.keySet();  // 获取集合中所有键的集合
Collection<String> con = map.values();  // 获取集合中所有值的集合
Set<Map.Entry<String, String>> set = map.entrySet();  // 获取所有键值对对象的集合
for (Map.Entry<String, String> me : set) {   // 遍历键值对对象的集合,得到每一个键值对对象
        String key = me.getKey();
        String value = me.getValue();
        System.out.println(key + "---" + value);
}
2、HashMap
① 基于哈希表的Map实现的的,一个Key对应一个Value,允许使用null键和null值,不保证映射的顺序,特别是它不保证该顺序恒久不变!也不是同步的。
② 哈希表的作用是用来保证键的唯一性的。
③ HashMap的key则需要通过覆写hashCode方法和equals方法来确保没有重复的key。
3、LinkedHashMap
① Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。
② 由哈希表保证键的唯一性。
③ 由链表保证键值的有序(存储和取出的顺序一致)。
// 创建集合对象
LinkedHashMap<String, String> hm = new LinkedHashMap<String, String>();
// 创建并添加元素
hm.put("2345", "hello");
hm.put("1234", "world");
hm.put("3456", "java");
hm.put("1234", "javaee");
// 遍历
Set<String> set = hm.keySet();
for (String key : set) {
        String value = hm.get(key);
        System.out.println(key + "---" + value);
}
4、TreeMap
① 一个有序的key-value集合,基于红黑树的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的构造方法。
② TreeMap是根据key进行排序的,它的排序和定位需要依赖比较器或覆写Comparable接口
③ TreeMap的查询、插入、删除效率均没有HashMap高,一般只有要对key排序时才使用TreeMap。
TreeMap的key不能为null,而HashMap的key可以为null

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 11:04:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表