Java中Map、List、Set操作
Map操作
使用compute
方法动态更新键值对
compute
方法可以用来根据当前的键值对计算新的值。
java
Map<String, Integer> counts = new HashMap<>();
counts.put("apple", 1);
counts.put("banana", 1);
System.out.println(counts);
counts.compute("apple", (key, val) -> val == null ? 1 : val + 1);
System.out.println(counts);
第一次输出
{banana=1, apple=1}
第二次输出
{banana=1, apple=2}
使用merge
方法合并两个Map
merge
方法可以用来合并两个Map,如果键冲突,可以指定如何合并值。
java
Map<String, Integer> map1 = new HashMap<>();
map1.put("apple", 1);
Map<String, Integer> map2 = new HashMap<>();
map2.put("banana", 2);
map1.merge("apple", map2.getOrDefault("apple", 0), Integer::sum);
// map1现在是 {"apple"=1, "banana"=2}
forEach
方法:遍历Map中的键值对。
java
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.forEach((key, value) -> System.out.println(key + " = " + value));
computeIfAbsent
方法:如果键不存在,则计算键的值并将其添加到Map中。
java
Map<String, List<String>> map = new HashMap<>();
map.computeIfAbsent("key", k -> new ArrayList<>()).add("value");
putIfAbsent
方法:如果键不存在,则添加键值对。
java
Map<String, String> map = new HashMap<>();
map.putIfAbsent("key", "default value");
List的操作
使用replaceAll
方法批量替换元素
replaceAll
方法可以用来替换列表中的所有元素。
java
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
list.replaceAll(s -> s.toUpperCase());
// list现在是 ["A", "B", "C"]
使用removeIf
方法根据条件移除元素
removeIf
方法可以用来根据条件移除列表中的元素。
java
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
list.removeIf(s -> s.startsWith("a"));
// list现在是 ["b", "c", "d"]
sort
方法:对List进行排序。
java
List<Integer> list = new ArrayList<>(Arrays.asList(5, 3, 1, 4, 2));
list.sort(Integer::compareTo);
subList
方法:获取List的一部分。
java
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
List<Integer> sublist = list.subList(1, 4); // [2, 3, 4]
Set的操作
使用removeAll
方法移除与另一个集合的交集
removeAll
方法可以用来移除Set中与另一个集合的交集元素。
java
Set<String> set1 = new HashSet<>(Arrays.asList("a", "b", "c"));
Set<String> set2 = new HashSet<>(Arrays.asList("b", "c", "d"));
set1.removeAll(set2);
// set1现在是 ["a"]
使用retainAll
方法保留与另一个集合的交集
retainAll
方法可以用来保留Set中与另一个集合的交集元素。
java
Set<String> set1 = new HashSet<>(Arrays.asList("a", "b", "c"));
Set<String> set2 = new HashSet<>(Arrays.asList("b", "c", "d"));
set1.retainAll(set2);
// set1现在是 ["b", "c"]
stream
方法:将Set转换为Stream进行流式处理。
java
Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c"));
set.stream().forEach(System.out::println);
removeIf
方法:根据给定的条件移除Set中的元素。
java
Set<String> set = new HashSet<>(Arrays.asList("a", "b", "c", "d"));
set.removeIf(s -> s.startsWith("a"));