Java中Map、List、Set操作

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"));
相关推荐
间彧19 分钟前
Java线程池详解与实战指南
java
用户2986985301427 分钟前
Java 使用 Spire.PDF 将PDF文档转换为Word格式
java·后端
渣哥36 分钟前
ConcurrentHashMap 1.7 vs 1.8:分段锁到 CAS+红黑树的演进与性能差异
java
间彧1 小时前
复用线程:原理详解与实战应用
java
咖啡Beans2 小时前
使用OpenFeign实现微服务间通信
java·spring cloud
我不是混子2 小时前
说说单例模式
java
间彧5 小时前
SimpleDateFormat既然不推荐使用,为什么java 8+中不删除此类
java
间彧5 小时前
DateTimeFormatter相比SimpleDateFormat在性能上有何差异?
java
间彧5 小时前
为什么说SimpleDateFormat是经典的线程不安全类
java