第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

平面圖嵌套集合

平面圖嵌套集合

大話西游666 2022-06-04 16:25:37
我有一個對象列表,其中一些可以是集合。我想得到一個普通對象流。List<Object> objects = List.of(1, 2, "SomeString", List.of(3, 4, 5, 6),     7, List.of("a", "b", "c"),    List.of(8, List.of(9, List.of(10))));我想獲得一個帶有元素的流。1, 2, "SomeString", 3, 4, 5, 6, 7, "a", "b", "c", 8, 9, 10我努力了Function<Object, Stream<Object>> mbjectToStreamMapper = null; //define it. I have not figured it out yet!objects.stream().flatMap(ObjectToStreamMapper).forEach(System.out::println);我還檢查了一個示例,該示例顯示了如何使用遞歸函數(shù)來展平集合。但是,在此示例中.collect(Collectors.toList());用于保留中間結(jié)果。Collectors.toList()是一個終端操作,它將立即開始處理流。我想獲得一個流,我可以稍后對其進(jìn)行迭代。更新我同意評論,擁有一個由不同性質(zhì)的對象組成的流是一個糟糕的主意。為了簡單起見,我只是寫了這個問題。在現(xiàn)實(shí)生活中,我可能會監(jiān)聽不同的事件,并處理來自傳入流的一些業(yè)務(wù)對象,其中一些可以發(fā)送對象流,其他的 - 只是單個對象。
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個贊

class Loop {

    private static Stream<Object> flat(Object o) {

        return o instanceof Collection ?

                ((Collection) o).stream().flatMap(Loop::flat) : Stream.of(o);

    }


    public static void main(String[] args) {

        List<Object> objects = List.of(1, 2, "SomeString", List.of( 3, 4, 5, 6),

                7, List.of("a", "b", "c"), List.of(8, List.of(9, List.of(10))));


        List<Object> flat = flat(objects).collect(Collectors.toList());


        System.out.println(flat);

    }

}

請注意List.of(null)拋出 NPE。


查看完整回答
反對 回復(fù) 2022-06-04
?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個贊

如果被遍歷stream的對象是Collection.


public static void main(String args[]) {

       List<Object> objects = List.of(1, 2, "SomeString", List.of(3, 4, 5, 6),

            7, List.of("a", "b", "c"),

            List.of(8, List.of(9, List.of(10))));

       List<Object> list = objects.stream().flatMap(c -> getNestedStream(c)).collect(Collectors.toList());

}


public static Stream<Object> getNestedStream(Object obj) {

    if(obj instanceof Collection){

        return ((Collection)obj).stream().flatMap((coll) -> getNestedStream(coll));

    }

    return Stream.of(obj);

}


查看完整回答
反對 回復(fù) 2022-06-04
?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個贊

注意,可以在字段中定義遞歸方法:


public class Test {

  static Function<Object,Stream<?>> flat=

    s->s instanceof Collection ? ((Collection<?>)s).stream().flatMap(Test.flat) : Stream.of(s);

  public static void main(String[] args) {

    objects.stream().flatMap(flat).forEach(System.out::print);

  }

}


查看完整回答
反對 回復(fù) 2022-06-04
  • 3 回答
  • 0 關(guān)注
  • 133 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號