Map双列集合常用实现类

本文深入解析了Map集合在Java中的应用,包括HashMap与LinkedHashMap的区别,如何存储键值对,以及如何进行查找、删除等操作。文章还展示了通过键获取值、检查键的存在性、获取所有键和键值对的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map双列集合

Collection 集合:向集合中存储元素采用一个个元素的方式存储。
Map 集合:集合中每一个元素由键与值两部分组成,通过键可以找对对应的值。

注意: Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值

HashMap:
用哈希表结构存储数据,无序存储。如果要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

LinkedHashMap:
LinkedHashMap是HashMap的子类,用哈希表结构+链表结构存储数据。有序存储;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。

HashMap

	Map<String, Integer> map = new HashMap<>();
	
	//把指定的键值对添加到Map集合中
	map.put("张三", 20);
	map.put("李四", 25);
	map.put("王五", 30);
	System.out.println(map);// {李四=25, 张三=20, 王五=30}
	
	//把指定的键所对应的键值对元素在Map集合中删除,返回被删除元素的值
	Integer i1 = map.remove("王五");
	System.out.println("i1:" + i1);// i1:30
	
	//根据指定的键,在Map集合中获取对应的值
	Integer i2 = map.get("张三");
	System.out.println("i2:" + i2);// i2:20
	
	//Map集合是否含有指定的键
	boolean b1 = map.containsKey("张三");// b1:true
	System.out.println("b1:" + b1);
	
	// 获取Map集合中所有的键,存储到Set集合中
	Set<String> set = map.keySet();
	for (String key : set) {
		Integer value = map.get(key);
		System.out.println(key + "=" + value);
	}
	//李四=25
	//张三=20
	
	//获取到Map集合中所有的键值对对象的集合(Set集合)
	Set<Entry<String, Integer>> entrySet = map.entrySet();
	for (Map.Entry<String, Integer> entry : entrySet) {
		String key = entry.getKey();
		Integer value = entry.getValue();
		System.out.println(key + "=" + value);
	}
	//李四=25
	//张三=20

LinkedHashMap

	//允许存储重复的键后面的值会覆盖前面的值,无序存储
	HashMap<String,String> map = new HashMap<>();
	map.put("a", "a");
	map.put("c", "c");
	map.put("b", "b");
	map.put("a", "d");
	System.out.println(map);//{a=d, b=b, c=c}
	
	//不允许存储重复的键编译不报错运行期报错,有序存储
	LinkedHashMap<String,String> linked = new LinkedHashMap<>();
	linked.put("a", "a");
	linked.put("c", "c");
	linked.put("b", "b");
	linked.put("d", "d");
	System.out.println(linked);//{a=a, c=c, b=b, d=d}
### Java双列集合常用方法总结 #### 1. 添加元素 通过 `put(K key, V value)` 方法向 `Map` 中添加键值对。 ```java Map<String, Integer> map = new HashMap<>(); map.put("apple", 10); // 添加键值对 "apple" -> 10[^4] ``` #### 2. 获取元素 使用 `get(Object key)` 方法根据键获取对应的值。 ```java int value = map.get("banana"); // 获取键 "banana" 对应的值[^4] System.out.println("Value of banana: " + value); ``` #### 3. 删除元素 通过 `remove(Object key)` 方法根据键删除对应的键值对。 ```java map.remove("orange"); // 删除键为 "orange" 的键值对[^4] ``` #### 4. 检查是否存在 - 使用 `containsKey(Object key)` 方法检查是否包含指定的键。 - 使用 `containsValue(Object value)` 方法检查是否包含指定的值。 ```java boolean containsKey = map.containsKey("apple"); // 检查是否包含键 "apple" System.out.println("Contains key 'apple': " + containsKey); boolean containsValue = map.containsValue(30); // 检查是否包含值 30 System.out.println("Contains value '30': " + containsValue); ``` #### 5. 遍历集合 可以通过以下几种方式遍历 `Map`: - 使用 `entrySet()` 方法获取所有键值对的集合,并遍历。 ```java for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } ``` - 使用 `forEach()` 方法结合 Lambda 表达式遍历。 ```java map.forEach((key, value) -> { System.out.println("Key: " + key + ", Value: " + value); }); ``` #### 6. 获取键和值的集合 - 使用 `keySet()` 方法获取所有键的集合。 - 使用 `values()` 方法获取所有值的集合。 ```java Set<String> keys = map.keySet(); // 获取所有键的集合 System.out.println("All keys: " + keys); Collection<Integer> values = map.values(); // 获取所有值的集合 System.out.println("All values: " + values); ``` #### 7. 清空集合 使用 `clear()` 方法清空 `Map` 中的所有键值对。 ```java map.clear(); // 清空 Map ``` #### 8. 获取集合大小 使用 `size()` 方法获取 `Map` 中键值对的数量。 ```java int size = map.size(); // 获取 Map 的大小[^4] System.out.println("Size of map: " + size); ``` #### 9. 自定义排序规则 `TreeMap` 支持自然排序或通过自定义比较器进行排序。如果键的类实现了 `Comparable` 接口,则可以使用自然排序[^2]。 ```java public class Student implements Comparable<Student> { private int age; @Override public int compareTo(Student o) { return this.age - o.age; } } TreeMap<Student, String> studentMap = new TreeMap<>(); // 自然排序[^2] ``` 如果需要自定义排序规则,可以传入一个 `Comparator` 实例。 ```java TreeMap<String, Integer> treeMap = new TreeMap<>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.compareTo(o1); // 按照降序排列 } }); ``` #### 10. 转换为其他数据结构 可以将 `Map` 转换为列表或其他数据结构。 ```java List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet()); ``` ### 注意事项 - `HashMap` 不保证键值对的顺序[^4]。 - `TreeMap` 按照键的自然顺序或指定的比较器顺序存储键值对[^2]。 - `LinkedHashMap` 按照插入顺序存储键值对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值