目录
[集合遍历for each](#集合遍历for each)
[编辑 这种数组的遍历是【index】编辑map排序【对象里重写compareTo编辑map排序【匿名内部类+lambda编辑](#编辑 这种数组的遍历是【index】编辑map排序【对象里重写compareTo编辑map排序【匿名内部类+lambda编辑)
[stream流编辑 编辑获取:](#stream流编辑 编辑获取:)
[map的值是collection 集合,获取方法map.values()编辑编辑](#map的值是collection 集合,获取方法map.values()编辑编辑)
[stream流的map加工编辑 合并(没有主调对象)编辑](#stream流的map加工编辑 合并(没有主调对象)编辑)
右端改一下tolist/set,左端可以i用list接------可重复,也可用set接------无重复编辑
[收集到数组编辑 收集到map编辑](#收集到数组编辑 收集到map编辑)
[可变参数 类型。。。values编辑](#可变参数 类型。。。values编辑)
[collections编辑 编辑](#collections编辑 编辑)
[斗地主编辑 编辑编辑](#斗地主编辑 编辑编辑)
集合遍历for each
本质是匿名内部类,重写了遍历到每个元素时调用的方法accept,可以简化成lambda形式。
map案例
这种数组的遍历是【index】
map排序【对象里重写compareTo
map排序【匿名内部类+lambda
stream流
获取:
map的键是set集合,获取方法map.keySet()
map的值是collection 集合,获取方法map.values()

处理:
stream流的map加工
合并(没有主调对象)
map的stream流的map方法:
Map对象的stream流的map方法: 举个例子演示
ChatGLM
在Java中,Map
对象的stream
流并不直接存在于Map
接口中,但是你可以通过Map
的entrySet()
、keySet()
或values()
方法来获取对应的流,然后使用map
方法进行操作。下面是一个例子,演示如何使用Map
的entrySet()
方法来获取流,并使用map
方法来处理每个条目:
java
复制
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class MapStreamExample {
public static void main(String[] args) {
// 创建一个Map对象
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
// 使用entrySet()获取流,然后使用map方法处理每个条目
Map<String, Integer> updatedMap = map.entrySet().stream()
.map(entry -> new AbstractMap.SimpleEntry<>(entry.getKey(), entry.getValue() * 2))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
// 打印更新后的Map
updatedMap.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
在这个例子中:
- 我们首先创建了一个
HashMap
,其中包含了一些水果的名称和对应的数量。 - 使用
entrySet()
方法获取Map的条目集合并转换为流。 - 接着,我们调用
map
方法,并传递一个lambda表达式,该表达式将每个条目的值乘以2。这里我们使用了AbstractMap.SimpleEntry
来创建新的键值对。 - 使用
collect
方法将流收集回一个新的Map
对象。 - 最后,我们使用
forEach
方法遍历新的Map
,并打印出每个键值对。
输出结果将是:
复制
Apple: 2
Banana: 4
Cherry: 6
每个值都是原Map
中对应值的两倍。这个例子展示了如何使用Map
的stream
流和map
方法来转换Map
中的元素。注意,我们在map
方法中使用的是AbstractMap.SimpleEntry
来创建新的条目,这是因为map
方法需要返回一个新的流,而Map.Entry
是一个接口,不能直接实例化。AbstractMap.SimpleEntry
是一个实现了Map.Entry
接口的简单实现类,可以用于这种场景。

用户_uBiEPA
Map对象的stream流的map方法:键都变成原来的字符串+"*%¥#@",值都在原来的基础上加100 举个例子演示
ChatGLM

引用
好的,下面是一个Java示例,演示如何使用Map对象的stream流和map方法来将每个键都变成原来的字符串加上"*%¥#@",并将每个值都在原来的基础上加100:
java
复制
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class MapStreamExample {
public static void main(String[] args) {
// 创建一个Map对象
Map<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
// 使用entrySet()获取流,然后使用map方法处理每个条目
Map<String, Integer> updatedMap = map.entrySet().stream()
.map(entry -> new AbstractMap.SimpleEntry<>(
entry.getKey() + "*%¥#@", // 键变成原来的字符串加上"*%¥#@"
entry.getValue() + 100 // 值在原来的基础上加100
))
.collect(Collectors.toMap(
AbstractMap.SimpleEntry::getKey,
AbstractMap.SimpleEntry::getValue
));
// 打印更新后的Map
updatedMap.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
在这个例子中:
- 我们首先创建了一个HashMap,其中包含了一些水果的名称和对应的数量。
- 使用
entrySet()
方法获取Map的条目集合并转换为流。 - 接着,我们调用
map
方法,并传递一个lambda表达式,该表达式将每个条目的键变成原来的字符串加上"*%¥#@",并将值在原来的基础上加100。这里我们使用了AbstractMap.SimpleEntry
来创建新的键值对。 - 使用
collect
方法将流收集回一个新的Map对象,通过Collectors.toMap
指定如何从每个SimpleEntry
中获取新的键和值。 - 最后,我们使用
forEach
方法遍历新的Map,并打印出每个键值对。
输出结果将是:
复制
Apple*%¥#@: 101
Banana*%¥#@: 102
Cherry*%¥#@: 103
每个键都变成了原来的字符串加上"*%¥#@",每个值都是原Map中对应值的基础上加100。这个例子展示了如何使用Map的stream流和map方法来转换Map中的键和值。
终结流
取最大值
stream的收集
右端改一下tolist/set,左端可以i用list接------可重复,也可用set接------无重复
收集到数组
收集到map
default
这里的default是什么

在这张图片中,"default" 是一个修饰符,用于标识接口中的默认方法。在 Java 8 及更高版本中,接口可以包含具有实现的方法,这些方法被称为默认方法。默认方法的定义方式是在方法声明前加上 "default" 关键字。
在这个特定的例子中,stream()
方法是一个默认方法,它是 Collection 接口的一部分。这意味着任何实现了 Collection 接口的类都可以直接使用这个方法,而无需自己实现它。stream()
方法的目的是返回当前集合对象的 Stream 流,使得可以对集合进行流操作。
总结来说,这里的"default" 表示 stream()
方法是一个默认方法,提供了对集合创建 Stream 的功能,而不需要在每个实现 Collection 接口的类中手动实现该方法。