开发环境:
Eclipse2022+ JDK1.8
1. 概述
Map是一种键-值(key-value)集合,每一个元素都包含一个key对象和一个value对象,且key和value之间存在一对一的关系。key值不允许重复,value可以重复。
Map接口主要的实现类有HashMap和TreeMap。HashMap按哈希算法存取键对象。TreeMap可以对键对象进行排序。
HashMap、TreeMap均实现Map接口,两者均继承AvstractMap类。HashMap的元素是无序的,TreeMap默认是按key值升序。两者在基础使用上大部分相同。如果对集合元素有排序要求,可以使用TreeMap, 没有的话,建议使用HashMap.
2. 定义与声明
Map<String,String> users = new HashMap<String,String>();
HashMap<String,String> users = new HashMap<String,String>();
TreeMap<String,String> users= new TreeMap<String,String>();
3. 基础功能
通过以下代码,可以对基础功能进行一个基本的认识。
3.1 HashMap
package map;
import java.util.*;
public class MapTest {
public static void main(String[] args) {
HashMap<String,String> users = new HashMap<String,String>();
//增加元素
users.put("44", "李元昊");
users.put("11", "张浩太");
users.put("33", "王强文");
users.put("55", "王路路");
users.put("22", "刘思诚");
//如果key值重复 实际处理是替换掉了原来的
users.put("55", "范清清");
System.out.println(users);
//返回所有value集合
//System.out.println(users.values());
//替换1
//users.replace("11", "王大锤");
//System.out.println(users);
//替换2
//users.replace("22", "刘思诚", "李院长");
//System.out.println(users);
//根据key值删除元素
//users.remove("11");
//根据key-value值删除元素
//users.remove("22", "刘思诚");
//清除列表
//users.clear();
//获取列表个数 如果为0 判断为空 也可以通过isEmpty()判断
//System.out.println("元素个数"+ users.size());
//
//if (users.isEmpty()) {
// System.out.println("users为空!"+ users.size());
//} else {
// System.out.println("users不为空!"+ users.size());
//}
//根据key判断是否存在
//if (users.containsKey(String.valueOf("11"))){
// System.out.println("有key为11的学生!");
//}
//根据value判断是否存在
//if (users.containsValue(String.valueOf("王强文"))){
// System.out.println("有value为[王强文]的学生!");
//}
//根据key获取value值
//System.out.println(users.get("11"));
//Map数据复制
//Map<String, String> map= new HashMap<String,String>();
//map.putAll(users);
//System.out.println(map);
//遍历1 推荐这种
//for(Map.Entry<String,String> entry: users.entrySet()) {
// System.out.println("key:"+ entry.getKey()+ " value:"+ entry.getValue());
//}
//遍历2
//for(Map.Entry entry: users.entrySet()) {
// System.out.println("key:"+ entry.getKey()+ " value:"+ entry.getValue());
//}
//遍历3
//Iterator it= users.keySet().iterator();
//while (it.hasNext()) {
// String key= it.next().toString();
// String value= users.get(key);
// System.out.println("key:"+ key+ " value:"+ value);
//}
//遍历4
//for(String key: users.keySet()) {
// System.out.println("key:"+ key+ " value:"+ users.get(key));
//}
}
}
3.2 TreeMap
拥有HashMap的绝大部分方法,且有自己的方法. 主要是一个排序。
package map;
import java.util.*;
public class TreeMapTest {
public static void main(String[] args) {
TreeMap<String,String> users= new TreeMap<String,String>();
//增加元素
users.put("44", "李元昊");
users.put("11", "张浩太");
users.put("33", "王强文");
users.put("55", "王路路");
users.put("22", "刘思诚");
//排序 默认是按key值升序
System.out.println(users);
//排序 倒序
//System.out.println(users.descendingMap());
//获取第一个元素
//System.out.println(users.firstEntry().toString());
//获取第一个元素key值
//System.out.println(users.firstEntry().getKey());
//获取第一个元素value值
//System.out.println(users.firstEntry().getValue());
//获取最后一个元素
//System.out.println(users.lastEntry().toString());
//获取最后一个元素key值
//System.out.println(users.lastEntry().getKey());
//获取最后一个元素value值
//System.out.println(users.lastEntry().getValue());
//返回第一个key大于等于33的键值对
//System.out.println(users.ceilingEntry("33"));
//返回所有key大于等于33的键值对 tailMap()有第二个参数 默认true 表示包含等于
//System.out.println(users.tailMap("33"));
//返回所有key大于等于33的键值对 tailMap()有第二个参数 设置false 表示不包含等于
//System.out.println(users.tailMap("33", false));
//返回第一个key小于等于33的键值对
//System.out.println(users.floorEntry("33"));
//返回所有key小于33的键值对 headMap()有第二个参数 默认false 表示不包含等于
//System.out.println(users.headMap("33"));
//返回所有key小于33的键值对 headMap()有第二个参数 设置true 表示包含等于
//System.out.println(users.headMap("33", true));
//如果key值重复 实际处理是替换掉了原来的
//users.put("55", "范清清");
//System.out.println(users);
//返回所有value集合
//System.out.println(users.values());
//替换1
//users.replace("11", "王大锤");
//System.out.println(users);
//替换2
//users.replace("22", "刘思诚", "李院长");
//System.out.println(users);
//根据key值删除元素
//users.remove("11");
//根据key-value值删除元素
//users.remove("22", "刘思诚");
//清除列表
//users.clear();
//获取列表个数 如果为0 判断为空 也可以通过isEmpty()判断
//System.out.println("元素个数"+ users.size());
//if (users.isEmpty()) {
// System.out.println("users为空!"+ users.size());
//} else {
// System.out.println("users不为空!"+ users.size());
//}
//根据key判断是否存在
//if (users.containsKey(String.valueOf("11"))){
// System.out.println("有key为11的学生!");
//}
//根据value判断是否存在
//if (users.containsValue(String.valueOf("王强文"))){
// System.out.println("有value为[王强文]的学生!");
//}
//根据key获取value值
//System.out.println(users.get("11"));
//Map数据复制
//Map<String, String> map= new TreeMap<String,String>();
//map.putAll(users);
//System.out.println(map);
//遍历1 推荐这种
//for(Map.Entry<String,String> entry: users.entrySet()) {
// System.out.println("key:"+ entry.getKey()+ " value:"+ entry.getValue());
//}
//遍历2
//for(Map.Entry entry: users.entrySet()) {
// System.out.println("key:"+ entry.getKey()+ " value:"+ entry.getValue());
//}
//遍历3
//Iterator it= users.keySet().iterator();
//while (it.hasNext()) {
// String key= it.next().toString();
// String value= users.get(key);
// System.out.println("key:"+ key+ " value:"+ value);
//}
//遍历4
//for(String key: users.keySet()) {
// System.out.println("key:"+ key+ " value:"+ users.get(key));
//}
}
}
4. 结束
学习整理。