Map接口
1.含义:保存具有映射关系的数据,Map中保存着两组值(一组是key,一组是value)
2.和Collection是平行关系
3.里面存放的数据是键值对的形式<key,value>
4.key:Map中的键,不能重复,底层实现采用Set存储;value是Map中的值,可以重复,底层实现采用Collection(List)存储
Map实际上是提供了一个Entry内部类里封装key-value
5.优点:类似于字典一样,通过key找到对应的value,使用这种映射关系,方便查找数据。
6.常用方法
| 方法 | 作用 |
|---|---|
| Object put(Object key,Object value) | 添加或更新元素 |
| Object remove(Object key) | 移除元素,删除一个key-value |
| void putAll(Map t) | … |
| void clear() | 清空元素 |
| Object get(Object key) | 获取指定的value,如果没有找到对应的key则返回null |
| boolean containsKey(Object key) | 是否包含指定的Key |
| boolean containsValue(Object value) | 是否包含指定的value |
| int size() | 集合的长度 |
| boolean isEmpty() | 是否为空 |
| boolean equals(Object obj) | … |
| Set keySet() | 返回Map当中所有key组成的集合Set |
| Collection values() | 返回Map当中所有value组成的集合Collection |
| Set entrySet() | 返回Map中所有的键值对组成的Set集合(每个集合都是一个Entry对象) |
7.Map遍历
一个键值对就是一个Entry,Entry是使用Set来存放,也是不可重复的
代码如下:
// 遍历key-value
//1.方法一
Set set = map.keySet();
for (Object obj : set) {
Object key = obj;
// 根据get()方法获得相应的value值
Object value = map.get(key);
System.out.println(key + "-"+ value);
}
//2.方法二
Set entrySet = map.entrySet();
for (Object object : entrySet) {
Entry entry = (Entry)object;
//通过entry调用getKey()方法得到key值
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key + "-" + value);
}
System.out.println("----------------------------");
//3.方式三就是封装的方式二
// 通过forEach()方法
map.forEach((key,value) -> System.out.println(key+"-"+value));
8.实现类
| 实现类 | 作用 |
|---|---|
| HashMap | 主要实现类 |
| LinkedHashMap | 使用链表的方式来添加Map元素的顺序,迭代顺序和插入顺序一致 |
| TreeMap | 和前面学的TreeSet类似 |
| Hashtable | 线程安全的,不建议使用,不允许使用null作为key,value(Properties:通常来处理属性文件,键值对都是String类型) |
内部类Map.Entry
1.Map中包含了一个内部类Entry,它封装了一个键值对
2.当向Map中添加元素时,会调用key所在类的equals()方法,判断两个键是否相同,如果同,则被后者覆盖
2.常用方法
----getKey():获取Entry中包含的key值
----getValue():获取Entry中包含的value值
注意collection是接口,collections是j集合工具类
Collections工具类的几个应用:
//1.reverse(List):翻转List集合中的元素
Collections.reverse(list);
System.out.println(list);
//2.shuffle(List):对List集合进行随机排序(每次结果基本都不一样)
Collections.shuffle(list);
//3.sort(List):根据元素的自然顺序对指定集合按照升序排序
Collections.sort(list);
System.out.println(list);
//4.swap(List,int,int):将指定集合中的索引为i的元素与j的元素交换
Collections.swap(list, 1, 2);
System.out.println(list);

被折叠的 条评论
为什么被折叠?



