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的设计目的是提供一种声明式的方式来处理数据集合,使代码更加简洁和易于理解。