JAVA 使用stream流將List中的對象某一屬性創建新的List
1.stream流介紹
Java Stream是Java 8引入的一種新機制,它可以讓我們以聲明式方式操作集合數據,提供了更加簡潔、優雅的集合處理方式。Stream是一個來自數據源的元素隊列,并支持聚合操作。它的特點有:
- Stream 不會修改原始數據源。
- Stream 操作是延遲執行的。
- Stream 操作可以是無限的(比如用于生成隨機數的操作)。
2.Stream基礎用法
- 1.創建Stream
可以使用Stream.of()方法從一組元素創建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(); // 并行流
- 2.過濾
可以使用filter()方法過濾Stream中的元素,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> filteredStream = stream.filter(x -> x % 2 == 0); // 過濾偶數
- 3.映射
可以使用map()方法將Stream中的元素映射為另一種類型,例如:
Stream<String> stream = Stream.of("apple", "banana", "orange");
Stream<Integer> lengthStream = stream.map(String::length); // 映射為字符串長度
- 4.排序
可以使用sorted()方法對Stream中的元素進行排序,例如:
Stream<Integer> stream = Stream.of(3, 1, 4, 1, 5, 9);
Stream<Integer> sortedStream = stream.sorted(); // 默認升序排序
- 5.去重
可以使用distinct()方法去除Stream中的重復元素,例如:
Stream<Integer> stream = Stream.of(1, 2, 3, 2, 1);
Stream<Integer> uniqueStream = stream.distinct(); // 去重
- 6.統計
可以使用count()方法統計Stream中的元素數量,例如:
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