Stream流,集合与基本数组的相互转换
Arrays类的Api
stream()方法传入数组,返回对应的stream流。
Collection集合的Api:
stream()不传参数,返回Stream流。
有了上述Api可以完成如下转换....
集合与基本数组的相互转换
@Test public void test5(){ int[] array = {1, 2, 5, 5, 5, 5, 6, 6, 7, 2, 9, 2}; /*int[]转list*///java8及以上版本 List<Integer> list1 = Arrays.stream(array).boxed().collect(Collectors.toList()); /*list转int[]*/ //方法一: Integer[] intArr = list.toArray(new Integer[list.size()]); //方法二:java8及以上版本 int[] intArr1 = list.stream().mapToInt(Integer::valueOf).toArray(); }
补充Stream的Api:
拿到stream流之后,可以根据stream方法的返回值类型,如果仍然是Stream就可以疯狂的链式调用stream的Api了。
Modifier and Type | Method and Description |
---|---|
boolean |
allMatch(Predicate<? super T> predicate)
返回此流中的所有元素是否匹配所提供的谓词。
|
boolean |
anyMatch(Predicate<? super T> predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
static <T> Stream.Builder<T> |
builder()
返回一个
Stream 生成器。 |
<R,A> R |
collect(Collector<? super T,A,R> collector)
执行 mutable reduction操作对元素的使用
Collector 流。 |
<R> R |
collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
执行该流的元素 mutable reduction操作。
|
static <T> Stream<T> |
concat(Stream<? extends T> a, Stream<? extends T> b)
创建一个懒洋洋的级联流的元素的所有元素的第一流通过第二个流的元素。
|
long |
count()
返回此流中元素的计数。
|
Stream<T> |
distinct()
返回一个包含不同的元素流(根据
Object.equals(Object) )这个流。 |
static <T> Stream<T> |
empty()
返回一个空的顺序
Stream 。 |
Stream<T> |
filter(Predicate<? super T> predicate)
返回由该流的元素组成的流,该元素与给定的谓词匹配。
|
Optional<T> |
findAny()
返回一个
Optional 描述一些流元素,或一个空的 Optional 如果流是空的。 |
Optional<T> |
findFirst()
返回一个
Optional 描述此流的第一个元素,或者一个空的 Optional 如果流是空的。 |
<R> Stream<R> |
flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
返回由将所提供的映射函数应用到每个元素的映射流的内容替换此流的每个元素的结果的结果流。
|
DoubleStream |
flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
DoubleStream 。 |
IntStream |
flatMapToInt(Function<? super T,? extends IntStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
IntStream 。 |
LongStream |
flatMapToLong(Function<? super T,? extends LongStream> mapper)
返回一个包含有一个映射的流应用提供的映射功能,每个元件产生的内容替换此流的每个元素的结果
LongStream 。 |
void |
forEach(Consumer<? super T> action)
对该流的每个元素执行一个动作。
|
void |
forEachOrdered(Consumer<? super T> action)
对该流的每个元素执行一个操作,如果流有一个定义的遇到顺序,则在该流的遇到顺序中执行一个动作。
|
static <T> Stream<T> |
generate(Supplier<T> s)
返回一个无穷序列无序流,其中每个元素是由提供
Supplier 生成。 |
static <T> Stream<T> |
iterate(T seed, UnaryOperator<T> f)
返回一个无穷序列有序
Stream 由最初的一元 seed 函数的 f 迭代应用产生的,产生一个由 seed , f(seed) , f(f(seed)) Stream ,等。 |
Stream<T> |
limit(long maxSize)
返回一个包含该流的元素流,截断长度不超过
maxSize 。 |
<R> Stream<R> |
map(Function<? super T,? extends R> mapper)
返回一个流,包括将给定函数应用到该流元素的结果。
|
DoubleStream |
mapToDouble(ToDoubleFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
DoubleStream 。 |
IntStream |
mapToInt(ToIntFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
IntStream 。 |
LongStream |
mapToLong(ToLongFunction<? super T> mapper)
返回一个包含应用给定的功能,该流的元素的结果
LongStream 。 |
Optional<T> |
max(Comparator<? super T> comparator)
返回最大元本流根据提供的
Comparator 。 |
Optional<T> |
min(Comparator<? super T> comparator)
返回最小元本流根据提供的
Comparator 。 |
boolean |
noneMatch(Predicate<? super T> predicate)
返回此流中的任何元素是否匹配所提供的谓词。
|
static <T> Stream<T> |
of(T... values)
返回一个元素为指定值的顺序排列的流。
|
static <T> Stream<T> |
of(T t)
返回一个包含一个元素的顺序
Stream 。 |
Stream<T> |
peek(Consumer<? super T> action)
返回由该流的元素组成的流,并在所提供的流中执行所提供的每个元素上的动作。
|
Optional<T> |
reduce(BinaryOperator<T> accumulator)
|
T |
reduce(T identity, BinaryOperator<T> accumulator)
对这一 reduction流元素,使用提供的价值认同和 associative累积函数,返回值减少。
|
<U> U |
reduce(U identity, BiFunction<U,? super T,U> accumulator, BinaryOperator<U> combiner)
对这一 reduction流元素,使用提供的身份,积累和组合功能。
|
Stream<T> |
skip(long n)
返回一个包含此流的其余部分丢弃的流的第一
n 元素后流。 |
Stream<T> |
sorted()
返回由该流的元素组成的流,按自然顺序排序。
|
Stream<T> |
sorted(Comparator<? super T> comparator)
返回一个包含该流的元素流,根据提供的
Comparator 排序。 |
Object[] |
toArray()
返回包含此流元素的数组。
|
<A> A[] |
toArray(IntFunction<A[]> generator)
返回一个数组包含该流的元素,使用提供的
generator 函数分配的返回的数组,以及可能对分区执行或调整所需的任何额外的数组。 |
Stream带我疯狂....