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"));
相关推荐
C++业余爱好者6 小时前
Java Stream API介绍
java·windows·python
家人的拥抱6 小时前
【JAVA】经典的生产者-消费者
java·开发语言
SamRol6 小时前
ThreadLocal、Sychronized和ReentrantLock
java
徐同保6 小时前
n8n项目node后端sqlite相关的
java·数据库·sqlite
r***99826 小时前
【JAVA进阶篇教学】第十一篇:Java中ReentrantLock锁讲解
java·开发语言
宠..6 小时前
创建标签控件
java·服务器·开发语言·前端·c++·qt
-大头.6 小时前
Spring Boot CLI 从入门到企业级实战(上下篇)
java·spring boot·后端
小二·6 小时前
Java基础教程之JDBC
java·开发语言
yuuki2332336 小时前
【C++】类和对象(中)
android·java·c++·后端
野蛮人6号6 小时前
力扣热题100道前84道,内容和力扣官方稍有不同,记录了本人的一些独特的解法
java·算法·leetcode·职场和发展