我的Java学习笔记
Map
文章目录
Map
1.HashMap的特点
基于哈希表的结构实现了Map接口
存储数据是键值对(K/V)
Key和value都允许为空
hashmap中的key不可以重复,value可以重复
如果key重复那么value会被新的value覆盖
hashmap存储的数据是有序的
2.HashMap操作
2.1 添加数据
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "老曹");
}
}
2.2 获取长度
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "老曹");
//获取长度
int siez = hashMap.size();
}
}
2.3 根据key获取value
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1003, "超姐");
//get(Object key) 根据key获取对应的value值
String name = hashMap.get(1002);
}
}
2.4 获取所有的key
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1003, "超姐");
//keySet() 获取所有的key 返回值是Set对象
Set<Integer> ks = hashMap.keySet();
}
}
2.5 遍历HashMap的数据
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//1. 获取所有的key
Set<Integer> ks = hashMap.keySet();
//2. 遍历所有的key
for (Integer i : ks) {
//3. 根据key获取对应的value
String value = hashMap.get(i);
System.out.println(i+"----"+value);
}
}
}
2.6 使用entrySet()遍历HashaMap
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
Set<Entry<Integer, String>> entrySet = hashMap.entrySet();
for (Entry<Integer, String> entry : entrySet) {
System.out.println(entry);
}
}
}
2.7 判断key是否存在
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//containsKey(Object key) 判断key是否存在
boolean key = hashMap.containsKey(1004);
System.out.println(key);
}
}
2.8 判断value是否存在
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//containsValue(Object value) 判断value是否存在
boolean key = hashMap.containsValue("张三");
System.out.println(key);
}
}
2.9 删除数据
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//remove(Object key) 根据key删除整条数据
hashMap.remove(1001);
//remove(Object key,Object value) 根据key和value删除整条数据
hashMap.remove(1002,"老曹");
}
}
2.10 替换数据
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//replace(Object key,Object newvalue) 根据key覆盖oldvalue的值
hashMap.replace(1001, "吴志文");
//replace(Object key,Object oldValue,Object newvalue)
// 根据key和value进行修改
hashMap.replace(1002, "老曹", "董哥");
System.out.println(hashMap.get(1002));
}
}
2.11 获取所有的value值
public class MapTest {
public static void main(String[] args) {
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1001, "xx");
hashMap.put(1002, "老曹");
hashMap.put(1001, "张三");
hashMap.put(1003, "超姐");
//把所有的value值放入集合中(Collection)
Collection<String> values = hashMap.values();
for (String string : values) {
System.out.println(string);
}
}
}