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"));
相关推荐
草莓base8 分钟前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring
Allen Bright21 分钟前
maven概述
java·maven
编程重生之路23 分钟前
Springboot启动异常 错误: 找不到或无法加载主类 xxx.Application异常
java·spring boot·后端
薯条不要番茄酱24 分钟前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
努力进修33 分钟前
“探索Java List的无限可能:从基础到高级应用“
java·开发语言·list
politeboy33 分钟前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes
Daniel 大东1 小时前
BugJson因为json格式问题OOM怎么办
java·安全
梓仁沐白4 小时前
ubuntu+windows双系统切换后蓝牙设备无法连接
windows·ubuntu
Theodore_10225 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
冰帝海岸7 小时前
01-spring security认证笔记
java·笔记·spring