📅  最后修改于: 2020-03-28 14:06:01             🧑  作者: Mango
Java 8中引入的Stream API,用于处理对象的集合。流是对象的序列,它支持许多不同的方法,可以通过管道进行排列以产生所需的结果。
Java流的功能:
创建流的不同方法:
下面是上述方法的实现:
程序:
// Java从Collections创建流Stream
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转化成Stream
private static void getStream(List list)
{
// 使用List创建stream对象
Stream stream = list.stream();
// 对list进行遍历迭代
Iterator it = stream.iterator();
// 对stream对象进行遍历迭代
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 创建ArrayList,String类型
List list = new ArrayList<>();
// Add element in list
list.add("芒果");
list.add("for");
list.add("芒果");
// 从List获取stream
getStream(list);
}
}
输出:
芒果 for 芒果
// Java根据值创建流
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转成Stream
private static void getStream()
{
// 利用给定的值创建流
Stream stream
= Stream.of(1, 2,
3, 4,
5, 6,
7, 8,
9);
// 展示按顺序排列的流
stream.forEach(p -> System.out.print(p + " "));
}
public static void main(String[] args)
{
// 从Stream获取值
getStream();
}
}
输出:
1 2 3 4 5 6 7 8 9
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转化成Stream
private static void getStream(T[] arr)
{
// 利用array创建流
// 使用Arrays.stream()
Stream streamOfArray
= Arrays.stream(arr);
// 遍历list
Iterator it
= streamOfArray.iterator();
// 遍历stream对象
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 获取array
String[] arr
= new String[] { "a", "b", "c" };
// 从Array获取stream
getStream(arr);
}
}
输出:
a b c
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转化成Stream
private static void getStream(T[] arr)
{
// 利用array创建流
// 使用Stream.of()
Stream streamOfArray = Stream.of(arr);
// 遍历list
Iterator it = streamOfArray.iterator();
// 遍历Stream对象
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 获取array
String[] arr
= new String[] { "a", "b", "c" };
// 从Array获取stream
getStream(arr);
}
}
输出:
abc
// Java程序,创建空Stream
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转化成Stream
private static void getStream()
{
// 使用Stream.empty()从array创建流
Stream streamOfArray
= Stream.empty();
// 遍历list
Iterator it
= streamOfArray.iterator();
// 遍历Stream对象
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 获取空Stream
getStream();
}
}
输出:
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转成Stream
private static void getStream()
{
// 使用builder()创建流
Stream.Builder builder
= Stream.builder();
// 在类型为Strings的流里面添加元素
Stream stream = builder.add("a")
.add("b")
.add("c")
.build();
// 遍历list
Iterator it = stream.iterator();
// 遍历Stream对象
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 使用Builder获取Stream
getStream();
}
}
输出:
abc
// Java使用Stream.iterate()方法创建一个无限流
import java.util.*;
import java.util.stream.Stream;
class GFG {
// 把List转成Stream
private static void
getStream(int seedValue, int limitTerms)
{
// 使用Stream.iterate()方法,创建无限流
Stream.iterate(seedValue,
(Integer n) -> n * n)
.limit(limitTerms)
.forEach(System.out::println);
}
public static void main(String[] args)
{
// 获取seed值
int seedValue = 2;
int limitTerms = 5;
// 获取Stream
getStream(seedValue, limitTerms);
}
}
输出:
2
4
16
256
65536
// Java使用Stream.generate()方法创建一个无限流
import java.util.*;
import java.util.stream.*;
class GFG {
// 把List转成Stream
private static void getStream(int limitTerms)
{
// 使用Stream.generate()方法创建无限流
Stream.generate(Math::random)
.limit(limitTerms)
.forEach(System.out::println);
}
public static void main(String[] args)
{
// 限制=5
int limitTerms = 5;
// 获取流
getStream(limitTerms);
}
}
输出:
0.2293502475696314
0.5650334795948209
0.3418138293253522
0.36831074763500116
0.4864408670097241
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.*;
import java.util.regex.Pattern;
class GFG {
// 把List转成Stream
private static void
getStream(List list, Pattern p)
{
list.stream()
.filter(p.asPredicate())
.forEach(System.out::println);
}
public static void main(String[] args)
{
// 创建ArrayList,由String类型组成
List list
= Arrays
.asList("芒果",
"For",
"芒果",
"芒果For芒果",
"A Computer Portal");
// 获取模式
Pattern p = Pattern.compile("^果");
// 获取流中匹配模式的元素
getStream(list, p);
}
}
输出:
芒果
芒果
芒果For芒果
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.*;
class GFG {
// 把List转成Stream
private static void getStream(Iterator itr)
{
// 把迭代器转成Spliterator
Spliterator spitr
= Spliterators
.spliteratorUnknownSize(itr,
Spliterator.NONNULL);
// 把spliterator转成stream
Stream stream
= StreamSupport.stream(spitr, false);
// 遍历list
Iterator it = stream.iterator();
// Iterate stream object
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 获取Iterator
Iterator iterator = Arrays
.asList("a", "b", "c")
.iterator();
// 从Iterator获取Stream
getStream(iterator);
}
}
输出:
abc
// Java创建Stream,利用Collections
import java.util.*;
import java.util.stream.*;
class GFG {
// 把List转成Stream
private static void getStream(Iterable iterable)
{
// 把迭代器转成Stream
Stream stream
= StreamSupport
.stream(iterable.spliterator(),
false);
// 遍历list
Iterator it = stream.iterator();
// 遍历stream对象
while (it.hasNext()) {
System.out.print(it.next() + " ");
}
}
public static void main(String[] args)
{
// 获取Iterable
Iterable iterable
= Arrays.asList("a", "b", "c");
// 从迭代器获取Stream
getStream(iterable);
}
}
输出:
abc