import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int minNumberInRotateArray (int[] nums) { // write code here return Arrays.stream(nums).min().getAsInt(); } }
1. 创建流
stream()
: 从集合创建一个流。int[] nums
:Arrays.stream(nums)
List<String>strings
:strings.stream()
of()
: 静态工厂方法,用于创建包含指定元素的流。
2. 中间操作(惰性求值)
2.1 过滤和映射
filter(Predicate)
: 使用给定的谓词过滤元素。
List<String> strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
map(Function)
: 将每个元素转换成另一种形式或数据类型。
List<Integer> numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); // 获取对应的平方数 List<Integer> squaresList = numbers.stream().map( i -> i*i).distinct().collect(Collectors.toList());
2.2 流的变换
distinct()
: 去除流中的重复元素。
2.3 排序和限制
sorted()
或sorted(Comparator)
: 对流中的元素进行自然排序或使用自定义比较器排序。limit(long)
: 限制流中元素的数量。skip(long)
: 跳过流中前n个元素。
3. 终端操作(急切求值)
3.1 遍历和汇总
forEach(Consumer)
: 对流中的每个元素执行操作。
Random random = new Random(); random.ints().limit(10).forEach(System.out::println);
collect(Collector)
: 将流中的元素汇总或归纳到一个结果中,通常用于创建集合。
List<String>strings = Arrays.asList("abc", "", "bc", "efg", "abcd","", "jkl"); List<String> filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList()); System.out.println("筛选列表: " + filtered); String mergedString = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.joining(", ")); System.out.println("合并字符串: " + mergedString);
3.2 规约和查找
reduce(T, BinaryOperator)
或reduce(BinaryOperator)
: 将流中的元素反复结合成一个结果。min(Comparator)
和max(Comparator)
: 找出流中最小或最大的元素。findFirst()
: 返回流中的第一个元素。findAny()
: 返回流中任意一个元素。
3.3 计数和匹配
count()
: 返回流中元素的数量。anyMatch(Predicate)
: 检查流中是否至少有一个元素符合条件。allMatch(Predicate)
: 检查流中的所有元素是否符合条件。noneMatch(Predicate)
: 检查流中是否没有元素符合条件。
4. 数值流操作
average()
: 计算流中数字的平均值。sum()
: 计算流中数字的总和。summingInt(ToIntFunction)
,summingLong(ToLongFunction)
,summingDouble(ToDoubleFunction)
: 将元素的特定属性求和。minBy(Comparator)
和maxBy(Comparator)
: 根据比较器找出流中的最小或最大元素。
5. 分组和分区
Collectors.groupingBy(Function)
: 根据函数的映射结果对元素进行分组。Collectors.partitioningBy(Predicate)
: 根据谓词将流分为两个子流。
6. 组合流
concatenation(Stream, Stream)
: 合并两个流。
7. 异常处理
exceptionally(Function)
: 在发生异常时提供一个替代的Stream。
8. 并行流
parallelStream()
: 从集合创建一个并行流。
9. 其他
9.1 无限流
iterate(T, UnaryOperator)
: 创建一个无限流,从初始值开始,每次调用函数生成下一个值。generate(Supplier)
: 创建一个无限流。
请注意,这个列表并不全面,但涵盖了大多数常用的Stream API操作。Stream API的设计目的是提供一种声明式的方式来处理数据集合,使代码更加简洁和易于理解。