JAVA 使用stream流将List中的对象某一属性创建新的List
1.stream流介绍
Java Stream是Java 8引入的一种新机制,它可以让我们以声明式方式操作集合数据,提供了更加简洁、优雅的集合处理方式。Stream是一个来自数据源的元素队列,并支持聚合操作。它的特点有:
2.Stream基础用法
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
也可以使用集合的stream()方法或parallelStream()方法创建Stream:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream1 = list.stream(); // 顺序流
Stream<Integer> stream2 = list.parallelStream(); // 并行流
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> filteredStream = stream.filter(x -> x % 2 == 0); // 过滤偶数
Stream<String> stream = Stream.of("apple", "banana", "orange");
Stream<Integer> lengthStream = stream.map(String::length); // 映射为字符串长度
Stream<Integer> stream = Stream.of(3, 1, 4, 1, 5, 9);
Stream<Integer> sortedStream = stream.sorted(); // 默认升序排序
Stream<Integer> stream = Stream.of(1, 2, 3, 2, 1);
Stream<Integer> uniqueStream = stream.distinct(); // 去重
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
long count = stream.count(); // 统计元素数量
3.具体用法
经常在业务处理时 我们需要将某个对象list中元素对象的某一属性放在一个新的list 里面,在Java的Stream API中,你可以使用map操作来将List中的元素的某一属性提取出来并组成一个新的List。
示例代码
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person("Alice", 25));
personList.add(new Person("Bob", 30));
personList.add(new Person("Charlie", 35));
List<String> namesList = personList.stream()
.map(Person::getName)
.collect(Collectors.toList());
System.out.println(namesList); // 输出:[Alice, Bob, Charlie]
}
}
例子中,我们有一个Person类,它具有name和age属性。我们创建了一个包含多个Person对象的List。然后,我们使用Stream API对List进行操作。得到了一个name的新List
原文地址:https://blog.csdn.net/weixin_45160274/article/details/134548309
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_3798.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。