亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

帶有泛型的 Java 流

帶有泛型的 Java 流

斯蒂芬大帝 2022-09-14 09:43:13
我有一個接受 的泛型函數。Collection<? extends T> ts我也通過了:Function<? extends T, ? extends K> classifier將每個項目映射到一個鍵(可能有重復項)TKFunction<? extends T, Integer> evaluator它為項目提供一個整數值。該函數本身對每個生成都有一個內置的計算(“”)(對于我們的示例,可以像平方一樣)int to intInteger最后,我想對每個鍵的所有值求和。所以最終結果是:.Map<K, Integer>例如,假設我們有一個列表,我們用它來分類、評估和平方作為內置函數。然后返回的地圖將是:["a","a", "bb"]Function.identityString::length{"a": 2, "b": 4}我該怎么做?(我想最好使用Collectors.groupingBy)
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

這是一種方法:


public static <T,K> Map<K,Integer> mapper (

    Collection<T> ts,

    Function<T, K> classifier,

    Function<T, Integer> evaluator,

    Function<Integer,Integer> calculator) 

{

     return

        ts.stream()

          .collect(Collectors.groupingBy(classifier,

                                         Collectors.summingInt(t->evaluator.andThen(calculator).apply(t))));

}

輸出:


System.out.println (mapper(Arrays.asList("a","a","bb"),Function.identity(),String::length,i->i*i));


{bb=4, a=2}


查看完整回答
反對 回復 2022-09-14
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

或者另一種方法:


private static <K, T> Map<K, Integer> map(Collection<? extends T> ts,

                                          Function<? super T, ? extends K> classifier,

                                          Function<? super T, Integer> evaluator,

                                          Function<Integer, Integer> andThen) {


    return ts.stream()

             .collect(Collectors.groupingBy(

                 classifier,

                 Collectors.mapping(evaluator.andThen(andThen),

                                    Collectors.reducing(0, Integer::sum))

             ));


}

并將其用于:


public static void main(String[] args) {


    System.out.println(map(

        Arrays.asList("a", "a", "bb"),

        Function.identity(),

        String::length,

        x -> x * x));


}


查看完整回答
反對 回復 2022-09-14
  • 2 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號