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"));
相关推荐
高兴达2 分钟前
RPC--Netty客户端实现
java·spring·rpc
重庆小透明29 分钟前
力扣刷题记录【1】146.LRU缓存
java·后端·学习·算法·leetcode·缓存
lang2015092834 分钟前
Reactor操作符的共享与复用
java
TTc_44 分钟前
@Transactional事务注解的批量回滚机制
java·事务
wei_shuo2 小时前
飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式
java·开发语言·飞算javaai
欧阳秦穆2 小时前
apoc-5.24.0-extended.jar 和 apoc-4.4.0.36-all.jar 啥区别
java·jar
岁忧2 小时前
(LeetCode 面试经典 150 题 ) 58. 最后一个单词的长度 (字符串)
java·c++·算法·leetcode·面试·go
Java初学者小白2 小时前
秋招Day14 - Redis - 应用
java·数据库·redis·缓存
fzyz1232 小时前
Windows系统下WSL从C盘迁移方案
人工智能·windows·深度学习·wsl
代码老y2 小时前
Spring Boot + 本地部署大模型实现:优化与性能提升
java·spring boot·后端