社区
Java SE
帖子详情
Stream类处理集合能改变集合元素的某个属性吗
Hello__World1994
2019-07-30 10:28:00
感觉stream处理集合是挺方便的,但是如果的集合是List<Student> 我希望最后返回的还是List<Student> 但是Student的age属性进行+1处理该怎么办,该调用哪个方法
...全文
4844
5
打赏
收藏
Stream类处理集合能改变集合元素的某个属性吗
感觉stream处理集合是挺方便的,但是如果的集合是List 我希望最后返回的还是List 但是Student的age属性进行+1处理该怎么办,该调用哪个方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
快叫我java小菜鸟
2019-10-11
打赏
举报
回复
list = list.stream().map(s -> s.setAge(s.getAge() + 1)).collect(Collectors.toList());
kkkkk0lllll
2019-10-11
打赏
举报
回复
list.stream().forEach(x->{x.age+=1;});
沁海棠
2019-09-28
打赏
举报
回复
map
weixin_41998852
2019-09-28
打赏
举报
回复
package com.csii.lqk;
import java.util.Arrays;
import java.util.List;
/**
* Hello world!
*
*/
public class App
{
public static void main(String[] args) {
List<Student> students = Arrays.asList(new Student(10), new Student(20));
students.stream().
map(student -> {student.setAge(student.getAge()+1);return student;}).
forEach(student -> System.out.println(student));
}
}
class Student{
Student(int age){
this.age=age;
}
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"age=" + age +
'}';
}
}
weixin_41998852
2019-09-28
打赏
举报
回复
public static void main(String args[]){
System.out.println("使用 Java 7: ");
// 计算空字符串
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl");
System.out.println("列表: " +strings);
long count = getCountEmptyStringUsingJava7(strings);
System.out.println("空字符数量为: " + count);
count = getCountLength3UsingJava7(strings);
System.out.println("字符串长度为 3 的数量为: " + count);
// 删除空字符串
List<String> filtered = deleteEmptyStringsUsingJava7(strings);
System.out.println("筛选后的列表: " + filtered);
// 删除空字符串,并使用逗号把它们合并起来
String mergedString = getMergedStringUsingJava7(strings,", ");
System.out.println("合并字符串: " + mergedString);
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5);
// 获取列表元素平方数
List<Integer> squaresList = getSquares(numbers);
System.out.println("平方数列表: " + squaresList);
List<Integer> integers = Arrays.asList(1,2,13,4,15,6,17,8,19);
System.out.println("列表: " +integers);
System.out.println("列表中最大的数 : " + getMax(integers));
System.out.println("列表中最小的数 : " + getMin(integers));
System.out.println("所有数之和 : " + getSum(integers));
System.out.println("平均数 : " + getAverage(integers));
System.out.println("随机数: ");
// 输出10个随机数
Random random = new Random();
for(int i=0; i < 10; i++){
System.out.println(random.nextInt());
}
System.out.println("使用 Java 8: ");
System.out.println("列表: " +strings);
count = strings.stream().filter(string->string.isEmpty()).count();
System.out.println("空字符串数量为: " + count);
count = strings.stream().filter(string -> string.length() == 3).count();
System.out.println("字符串长度为 3 的数量为: " + count);
filtered = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.toList());
System.out.println("筛选后的列表: " + filtered);
mergedString = strings.stream().filter(string ->!string.isEmpty()).collect(Collectors.joining(", "));
System.out.println("合并字符串: " + mergedString);
squaresList = numbers.stream().map( i ->i*i).distinct().collect(Collectors.toList());
System.out.println("Squares List: " + squaresList);
System.out.println("列表: " +integers);
IntSummaryStatistics stats = integers.stream().mapToInt((x) ->x).summaryStatistics();
System.out.println("列表中最大的数 : " + stats.getMax());
System.out.println("列表中最小的数 : " + stats.getMin());
System.out.println("所有数之和 : " + stats.getSum());
System.out.println("平均数 : " + stats.getAverage());
System.out.println("随机数: ");
random.ints().limit(10).sorted().forEach(System.out::println);
// 并行处理
count = strings.parallelStream().filter(string -> string.isEmpty()).count();
System.out.println("空字符串的数量为: " + count);
}
private static int getCountEmptyStringUsingJava7(List<String> strings){
int count = 0;
for(String string: strings){
if(string.isEmpty()){
count++;
}
}
return count;
}
private static int getCountLength3UsingJava7(List<String> strings){
int count = 0;
for(String string: strings){
if(string.length() == 3){
count++;
}
}
return count;
}
private static List<String> deleteEmptyStringsUsingJava7(List<String> strings){
List<String> filteredList = new ArrayList<String>();
for(String string: strings){
if(!string.isEmpty()){
filteredList.add(string);
}
}
return filteredList;
}
private static String getMergedStringUsingJava7(List<String> strings, String separator){
StringBuilder stringBuilder = new StringBuilder();
for(String string: strings){
if(!string.isEmpty()){
stringBuilder.append(string);
stringBuilder.append(separator);
}
}
String mergedString = stringBuilder.toString();
return mergedString.substring(0, mergedString.length()-2);
}
private static List<Integer> getSquares(List<Integer> numbers){
List<Integer> squaresList = new ArrayList<Integer>();
for(Integer number: numbers){
Integer square = new Integer(number.intValue() * number.intValue());
if(!squaresList.contains(square)){
squaresList.add(square);
}
}
return squaresList;
}
private static int getMax(List<Integer> numbers){
int max = numbers.get(0);
for(int i=1;i < numbers.size();i++){
Integer number = numbers.get(i);
if(number.intValue() > max){
max = number.intValue();
}
}
return max;
}
private static int getMin(List<Integer> numbers){
int min = numbers.get(0);
for(int i=1;i < numbers.size();i++){
Integer number = numbers.get(i);
if(number.intValue() < min){
min = number.intValue();
}
}
return min;
}
private static int getSum(List numbers){
int sum = (int)(numbers.get(0));
for(int i=1;i < numbers.size();i++){
sum += (int)numbers.get(i);
}
return sum;
}
private static int getAverage(List<Integer> numbers){
return getSum(numbers) / numbers.size();
}
}
Stream
—优雅的
处理
集合
元素
Stram流是jdk8的一个新特性,是一种高效迭代器,用于实现内部迭代,并高效
处理
数据。它可以实现数据过滤、数据映射、数据排序、排序等
集合
数据常用操作。
Java8
Stream
处理
集合
数据
今天给大家带来 Java 8
Stream
讲解,为什么直接讲这个,是因为只要你学完,立刻就能上手,并能让它在你的代码中大展身手。值得注意的是:学习
Stream
之前必须先学习 lambda 的相关知识。本文也假设读者已经掌握 lambda 的相关知识很重要的一点是,很多流操作本身就会返回一个流,所以多个操作可以直接连接起来,我们来看看一条
Stream
操作的代码: 并且设置相应的值和
集合
数据 1.
stream
() / parallel
Stream
() 最常用到的方法,将
集合
转换为流 而
在Java中利用
Stream
处理
集合
数据
Java的
Stream
API提供了一种声明式、函数式编程风格的数据
处理
方式,使得
集合
数据的
处理
更加简洁、高效。通过掌握
Stream
的基本概念、创建方式以及丰富的操作,你可以编写出更加优雅、易读的代码来
处理
集合
数据。同时,也需要注意并行
Stream
的使用场景以及性能考虑,以确保代码的正确性和高效性。
如何用一个对象
集合
中对象的某个
属性
生成一个新的
集合
对象
集合
的某一
属性
生成新的
集合
Java8新特性:使用
Stream
优化对
集合
的操作(知识)
Java8新特性:使用
Stream
优化对
集合
的操作(知识) Java8中提供了
Stream
对
集合
操作作出了极大的简化,
Stream
的常用操作分
类
如下: 如上图所示,
Stream
中的操作可以分为两大
类
:中间操作与结束操作。 中间操作只是对操作进行了记录,只有结束操作才会触发实际的计算(即惰性求值),这也是
Stream
在迭代大
集合
时高效的原因之一。中间操作又可以分为无状态(Stateless)操作与...
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章