Spliterator的简单介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kang389110772/article/details/82823498

Spliterator的简单介绍

作用是为并行提供一个可切割的spliterator,然后可以并行处理。

tryAdvance方法和forEachRemaing方法

tryAdvance进行一次iterate并且判断是否有元素还存在

forEachRemaing是对剩下的元素都执行action

private static void arraySplitDemo() {
   List<String> list = Arrays.asList("Apple", "Banana", "Orange");

   Spliterator<String> spliterator = list.spliterator();

   spliterator.tryAdvance(System.out::println);

   System.out.println("-- buld traversal");
   spliterator.forEachRemaining(System.out::println);

   System.out.println("--- attempting try advance again");
   System.out.println(spliterator.tryAdvance(System.out::println));
}

trySplit方法

split分成两个,返回新的一个

  List<String> list = Arrays.asList("Apple", "Banana", "Orange");

  Spliterator<String> s = list.spliterator();
  Spliterator<String> s1 = s.trySplit();

  s.forEachRemaining(System.out::println);
  System.out.println("-- traversing the other half of the spliterator --- ");
  s1.forEachRemaining(System.out::println);

characteristics() and hasCharacteristics()

这是对某种特性的集合是否拥有哪个特点进行判断

public static void main (String[] args) {
        List<String> list = new ArrayList<>();

        Spliterator<String> s = list.spliterator();

        if(s.hasCharacteristics(Spliterator.ORDERED)){
            System.out.println("ORDERED");
        }
        if(s.hasCharacteristics(Spliterator.DISTINCT)){
            System.out.println("DISTINCT");
        }
        if(s.hasCharacteristics(Spliterator.SORTED)){
            System.out.println("SORTED");
        }
        if(s.hasCharacteristics(Spliterator.SIZED)){
            System.out.println("SIZED");
        }

        if(s.hasCharacteristics(Spliterator.CONCURRENT)){
            System.out.println("CONCURRENT");
        }
        if(s.hasCharacteristics(Spliterator.IMMUTABLE)){
            System.out.println("IMMUTABLE");
        }
        if(s.hasCharacteristics(Spliterator.NONNULL)){
            System.out.println("NONNULL");
        }
        if(s.hasCharacteristics(Spliterator.SUBSIZED)){
            System.out.println("SUBSIZED");
        }
    }

estimateSize() and getExactSizeIfKnown()

estimateSize() 返回一个Long姓的值,在元素数不尽或很难计算或者不知道的时候返回Long.MAX_VALUE

getExactSizeKnow() 如果这个spliterator有SIZED的特点,那么就调用estimateSize()进行返回,否则返回-1

猜你喜欢

转载自blog.csdn.net/kang389110772/article/details/82823498