流 API 改进
原文:https://www.studytonight.com/java-9/stream-api-improvement
Java 在 Java 9 版本的 流 API 中加入了一些新的方法。这些方法返回一个集合流,例如,我们希望获得一个带有指定谓词的集合流。我们将借助示例来讨论这些,但是首先,让我们看看 Java 9 在 流 API 中添加了什么(方法)。
- takeWhile()
- dropWhile()
- 迭代()
- ofNullable()
Java takeWhile()方法
此方法用于获取一个流,该流由从该流中获取的与给定谓词匹配的元素子集组成。
default Stream<T> takeWhile(Predicate<super T> predicate)
示例:Takewhile()方法
此方法将元素带到指定的谓词。例如,如果我们向 10 提供谓词,那么它将元素保持到 10,并停止进一步遍历。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args){
List<Integer> list
= Stream.of(20,15,30,10,50)
.takeWhile(i -> (i>10)).collect(Collectors.toList());
System.out.println(list);
}
}
【20,15,30】
示例 2: takeWhile()方法
在这个例子中,我们有一个字符流,并获得该流的一个子集,直到‘h’并收集到一个列表中。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args){
List<String> list
= Stream.of("a", "b", "c", "d", "e", "f", "g", "h", "i")
.takeWhile(a->!a.equals("h")).collect(Collectors.toList());
System.out.println(list);
}
}
【a、b、c、d、e、f、g】
Java dropWhile()方法
此方法用于获取指定谓词后的流子集。它会删除指定元素之前累积的所有元素。
换句话说,我们可以说,在删除了与给定谓词匹配的元素子集后,它返回了一个由该流的剩余元素组成的流。
default Stream<T> dropWhile(Predicate<super T> predicate)
示例:dropWhile()方法
在本例中,我们通过使用 dropWhile()方法获得了出现在“h”之后的元素列表。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args){
List<String> list
= Stream.of("a", "b", "c", "d", "e", "f", "g", "h", "i")
.dropWhile(a->!a.equals("h")).collect(Collectors.toList());
System.out.println(list);
}
}
【h,I】
示例 2: dropWhile()
public class Main {
public static void main(String[] args){
List<Integer> list
= Stream.of(20,15,30,10,50)
.dropWhile(i -> (i>10)).collect(Collectors.toList());
System.out.println(list);
}
}
【10,50】
流:新的迭代方法
Java 9 流接口增加了一个新的重载方法迭代。这个方法允许我们迭代流元素直到指定的条件。
它需要三个参数,seed、hasNext 和 Next。
static <T> Stream<T> iterate(T seed, Predicate<super T> hasNext, UnaryOperator<T> next)
示例:
在这个例子中,我们通过迭代 iterate() 方法将奇数元素收集到一个列表中。
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args){
Stream<Integer> listN = Stream.iterate(1, i->i<10, i->i+2);
List<Integer> list = listN.collect(Collectors.toList());
System.out.println(list);
}
}
【1,3,5,7,9】