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帶我瘋狂....