Java8中的stream.map() 详细举例
时间: 2023-10-24 13:18:21 浏览: 93
好的,我来详细举一个例子。
假设我们有一个List集合,其中存储了一些整数,我们想要将这些整数都乘以2并存储到一个新的List集合中,我们可以使用stream.map()方法来实现。
首先,我们需要创建一个List集合并向其中添加一些整数,例如:
```
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
```
接下来,我们可以使用stream.map()方法将集合中的每个整数都乘以2,代码如下:
```
List<Integer> newList = list.stream()
.map(i -> i * 2)
.collect(Collectors.toList());
```
在上面的代码中,我们首先通过stream()方法将List集合转换为一个Stream流,然后使用map()方法将集合中的每个整数都乘以2,并返回一个新的Stream流。最后,我们使用collect()方法将新的Stream流转换为一个List集合。
这样,newList中就存储了原集合中每个整数都乘以2后的结果。
希望这个例子能够帮助你更好地理解Java8中的stream.map()方法。
相关问题
stream.map 和stream.flatmap的详细区别 并代码举例
好的,明白了。关于你的问题,stream.map和stream.flatMap都是Java 8中Stream API中的方法,它们都可以用于对一个流中的元素进行处理。不同的是,map方法只能对每个元素进行一对一的转换操作,而flatMap方法则可以进行一对多的操作。具体来说,flatMap方法将流中的每个元素转换为一个流,然后将这些流扁平化为一个新流。举例如下:
```
List<String> words = Arrays.asList("hello", "world");
// 使用map方法将每个字符串转换为长度
List<Integer> wordLengths = words.stream()
.map(String::length)
.collect(Collectors.toList());
// 输出结果为 [5, 5]
// 使用flatMap方法将每个字符串拆分为单词
List<String> wordList = words.stream()
.flatMap(str -> Arrays.stream(str.split("")))
.collect(Collectors.toList());
// 输出结果为 [h, e, l, l, o, w, o, r, l, d]
```
希望这个回答能够帮到你。
java stream Collectors.toMap
java stream Collectors.toMap是一个流式处理方法,用于将一个List集合转换为Map集合。它接受三个参数:第一个参数指定了作为Map的key值的属性或方法引用,第二个参数指定了作为Map的value值的属性或方法引用,第三个参数用于处理key重复的情况。 通过使用Collectors.toMap方法,可以将一个List集合中的元素按照指定的属性或方法引用作为key值,将整个对象或属性值作为value值,构建出一个key值唯一的Map集合。
举例来说,如果有一个List<proVo>对象的集合,我们希望将其中的proVo对象按照id作为key,name作为value,构建成一个Map集合,可以使用如下代码:
Map<Long, String> map = list.stream().collect(Collectors.toMap(proVo::getId, proVo::getName));
这样就可以得到一个key为id,value为name的Map集合。
另外,如果在转换过程中遇到了key重复的情况,可以通过第三个参数来处理。比如可以选择保留前一个元素的值,或者保留后一个元素的值,或者进行其他自定义的处理。 例如:
Map<Long, String> map = list.stream().collect(Collectors.toMap(proVo::getId, proVo::getName, (k1, k2) -> k1));
这样当遇到key重复的情况时,会保留前一个元素的值作为value。
总之,java stream Collectors.toMap方法是用于将List集合转换为Map集合的一个便捷方法,可以根据需求选择合适的参数来进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [java8stream源码-streams:用于针对旧设备的Android项目的java.util.stream库的非常不完整的重新实现](https://download.csdn.net/download/weixin_38690522/19389466)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [【业务功能篇35】Java Stream流 :Collectors.toMap](https://blog.csdn.net/studyday1/article/details/131454535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文