簡體   English   中英

Java 8 create將復雜類型的列表映射到其字段之一的列表

[英]Java 8 create map a list of a complex type to list of one of its fields

我有一些復雜類型的列表,我想想出一種巧妙的方法,可以使用Java 8的流僅從其字段之一構造列表。 讓我們舉個例子:

public static class Test {
    public Test(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    private String name;
    // other fields
}

想象一下我有一個List<Test> l; 現在,我想創建一個新列表,其中包含l中所有元素的name值。 我發現的一種可能的解決方案如下:

List<String> names = l.stream().map(u ->u.getName()).
    collect(Collectors.<String> toList());

但是我想知道是否有更好的方法可以將給定類型的列表映射到另一個不同類型的列表。

使用方法引用更短:

List<String> names = l.stream().map(Test::getName).
    collect(Collectors.toList());

您不能避免至少兩個Stream方法,因為您必須首先將每個Test實例轉換為String實例(使用map() ),然后必須在Stream上運行一些終端操作才能處理Stream管道(在您的如果您選擇將StringStream收集到List )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM