<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 3.4.2 Collector接口 ```java import java.util.Set; import java.util.function.BiConsumer; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Supplier; /** * @param <T> 流中收集的項目 * @param <A> 累加器,在收集過程中用于累積部分結果的對象的類型 * @param <R> 收集操作得到的對象的類型 */ public interface Collector<T, A, R> { Supplier<A> supplier(); BiConsumer<A, T> accumulator(); BinaryOperator<A> combiner(); Function<A, R> finisher(); Set<Characteristics> characteristics(); enum Characteristics { CONCURRENT, UNORDERED, IDENTITY_FINISH } } ``` 前四個方法都會返回一個被collect方法調用的函數,而`characteristics`方法則提供了一個提示列表,告訴collect方法在執行歸約操作時可以應用那些優化。 ---- > 在為了提高性能的情況下,可以自行開發Collector接口的實現類。 **1. 自定義Collector接口的實現類** 下面是Collector接口的實現類: ```java import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Set; import java.util.function.BiConsumer; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collector; /** * 自定義收集器的實現 * @author z8g * @param <E> 元素類型 */ public class ToListCollector<E> implements Collector<E, List<E>, List<E>> { /** * 操作集合的起始點 * * @return */ @Override public Supplier<List<E>> supplier() { return ArrayList::new; } /** * 累加 * * @return */ @Override public BiConsumer<List<E>, E> accumulator() { return List::add; } /** * 內容合并 * * @return */ @Override public BinaryOperator<List<E>> combiner() { return (list1, list2) -> { list1.addAll(list2); return list1; }; } /** * 恒等函數 * * @return */ @Override public Function<List<E>, List<E>> finisher() { return Function.identity(); } @Override public Set<Characteristics> characteristics() { return Collections.unmodifiableSet(EnumSet.of( Characteristics.IDENTITY_FINISH, Characteristics.CONCURRENT)); } } ``` **2. ToListCollector類使用示例** ```java import java.util.Arrays; import java.util.List; public class CollectorsTest { public static void main(String[] args) { List<String> strList = Arrays.asList("abcd","efg","hi"); List<Integer> lenList = strList.stream() .map(String::length) .collect(new ToListCollector<>()); System.out.println(lenList); // [4, 3, 2] } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看