Java中Map的各种用法

时间:2022-12-27 19:54:24

Hello,我是CoderBug,今天我们来学习Java里面的Map

1.什么是Map?

Map是Java中的一种常见的数据结构,用于存储键值对。Map的实现类有很多,常见的有HashMap、TreeMap和LinkedHashMap等。Map的使用非常方便,可以通过键来快速查找和修改对应的值。

2.Map的基础操作有哪些呢?

Map的基本操作包括:

  1. put(key, value):向Map中添加一个键值对。如果Map中已经存在该键,则会将原来的值替换为新值。
  2. get(key):根据键获取对应的值。如果Map中不存在该键,则返回null。
  3. remove(key):根据键删除对应的键值对。如果Map中不存在该键,则返回null。
  4. size():获取Map中键值对的数量。
  5. isEmpty():判断Map是否为空。
  6. containsKey(key):判断Map中是否包含指定的键。
  7. containsValue(value):判断Map中是否包含指定的值。
  8. keySet():获取Map中所有键的集合。
  9. values():获取Map中所有值的集合。
  10. entrySet():获取Map中所有键值对的集合。

3.常用的Map区别在哪?

Map的实现类之间的区别主要体现在存储结构、查找性能、排序方式等方面。

  • HashMap是一种哈希表实现的Map,它的存储结构是散列表,可以通过哈希函数快速查找键值对。HashMap的查找性能很高,但是它不保证键值对的顺序,因此如果需要按照键或值的顺序遍历Map中的元素,可能需要使用其他的Map实现类。
  • TreeMap是一种二叉树实现的Map,它的存储结构是红黑树。TreeMap可以按照键的升序或降序遍历Map中的元素,因此如果需要按照键的顺序遍历Map中的元素,可以使用TreeMap。但是TreeMap的查找性能较低,如果需要高效的查找,可以使用HashMap或其他的Map实现类。
  • LinkedHashMap是一种链表哈希表实现的Map,它的存储结构是双向链表和散列表的结合。LinkedHashMap可以按照键值对插入的先后顺序遍历Map中的元素,也可以按照键的升序或降序遍历Map中的元素。LinkedHashMap的查找性能比TreeMap略低,但是比HashMap略高。

4.案例演示

HashMap示例:

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("Alice", 1);
map.put("Bob", 2);
map.put("Eve", 3);
System.out.println(map); // 输出{Alice=1, Bob=2, Eve=3}
System.out.println(map.get("Alice")); // 输出1
System.out.println(map.remove("Bob")); // 输出2
System.out.println(map.size()); // 输出2
System.out.println(map.isEmpty()); // 输出false
System.out.println(map.containsKey("Alice")); // 输出true
System.out.println(map.containsValue(2)); // 输出false
}
}

TreeMap示例:

import java.util.Map;
import java.util.TreeMap;

public class TreeMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
map.put("Alice", 1);
map.put("Bob", 2);
map.put("Eve", 3);
System.out.println(map); // 输出{Alice=1, Bob=2, Eve=3}
System.out.println(map.get("Alice")); // 输出1
System.out.println(map.remove("Bob")); // 输出2
System.out.println(map.size()); // 输出2
System.out.println(map.isEmpty()); // 输出false
System.out.println(map.containsKey("Alice")); // 输出true
System.out.println(map.containsValue(2)); // 输出false
}
}

LinkedHashMap示例:

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
public static void main(String[] args) {
Map<String, Integer> map = new LinkedHashMap<>();
map.put("Alice", 1);
map.put("Bob", 2);
map.put("Eve", 3);
System.out.println(map); // 输出{Alice=1, Bob=2, Eve=3}
System.out.println(map.get("Alice")); // 输出1
System.out.println(map.remove("Bob")); // 输出2
System.out.println(map.size()); // 输出2
System.out.println(map.isEmpty()); // 输出false
System.out.println(map.containsKey("Alice")); // 输出true
System.out.println(map.containsValue(2)); // 输出false
}
}

如有帮助,麻烦点个赞,如有错误请指出,我是CoderBug,一个跟你一样追风的少年!