簡體   English   中英

什么是Java 8相當於Guava的transformAndConcat?

[英]What is the java 8 equivalent to Guava's transformAndConcat?

讓我們假設我有一個包含List ,例如

 public static class ListHolder {
    List<String> list = new ArrayList<>();

    public ListHolder(final List<String> list) {
        this.list = list;
    }

    public List<String> getList() {
        return list;
    }
}

讓我們進一步假設我有一個完整的這個類的實例列表

    ListHolder listHolder1 = new ListHolder(Arrays.asList("String 1", "String 2"));
    ListHolder listHolder2 = new ListHolder(Arrays.asList("String 3", "String 4"));
    List<ListHolder> holders = Arrays.asList(listHolder1, listHolder2);

現在我需要提取所有字符串以獲取包含所有實例的所有字符串的字符串列表,例如:

[String 1, String 2, String 3, String 4]

使用Guava,這將是這樣的:

     List<String> allString = FluentIterable
            .from(holders)
            .transformAndConcat(
                    new Function<ListHolder, List<String>>() {
                        @Override
                        public List<String> apply(final ListHolder listHolder) {
                            return listHolder.getList();
                        }
                    }
            ).toList();

我的問題是如何使用Java 8流API實現相同的目標

List<String> allString = holders.stream()
    .flatMap(h -> h.getList().stream())
    .collect(Collectors.toList());

這是一個關於收集展平的舊問題:(展平集合

暫無
暫無

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

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