java8 新特性

在 Java 8 中,List 接口新增了一些方法来支持函数式编程和流式操作。下面是一些常用的新增方法及其用法:

  1. forEach 方法:用于对列表中的每个元素执行指定的操作。
List<String> list = Arrays.asList("a", "b", "c");
list.forEach(System.out::println); // 打印每个元素
  1. removeIf 方法:根据指定的条件(谓词)来移除列表中的元素。
List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
list.removeIf(n -> n % 2 == 0); // 移除偶数
  1. replaceAll 方法:使用指定的函数对列表中的每个元素进行替换。
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
list.replaceAll(String::toUpperCase); // 将每个元素转换为大写
  1. sort 方法:对列表中的元素进行排序。
List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 2));
list.sort(Comparator.naturalOrder()); // 升序排序
  1. stream 方法:将列表转换为一个流(Stream),以便进行流式操作。
List<String> list = Arrays.asList("a", "b", "c");
list.stream().filter(s -> s.startsWith("a")).forEach(System.out::println); // 打印以 "a" 开头的元素

这些方法使得在处理列表时更加方便和灵活,可以使用函数式编程的风格进行操作。
请注意,上述方法只是 List 接口中的一部分新增方法,还有其他方法和相关的接口(如 PredicateComparator 等)也是 Java 8 引入的,用于支持流式操作和函数式编程。

当使用 stream 方法将列表转换为流(Stream)时,可以使用以下常用的流操作方法:

  1. filter 方法:根据指定的条件(谓词)过滤流中的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().filter(n -> n % 2 == 0).forEach(System.out::println); // 打印偶数
  1. map 方法:对流中的每个元素应用指定的函数,并将结果映射为一个新的流。
List<String> list = Arrays.asList("apple", "banana", "orange");
list.stream().map(String::toUpperCase).forEach(System.out::println); // 打印大写的水果名称
  1. distinct 方法:去除流中的重复元素。
List<Integer> list = Arrays.asList(1, 2, 2, 3, 3, 4, 5);
list.stream().distinct().forEach(System.out::println); // 打印去重后的元素
  1. sorted 方法:对流中的元素进行排序。
List<Integer> list = Arrays.asList(3, 1, 2);
list.stream().sorted().forEach(System.out::println); // 打印升序排序后的元素
  1. limit 方法:限制流中元素的数量。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().limit(3).forEach(System.out::println); // 打印前三个元素
  1. skip 方法:跳过流中的前几个元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream().skip(2).forEach(System.out::println); // 打印跳过前两个元素后的元素

这些方法可以根据需要进行组合和链式调用,以实现更复杂的流式操作。

除了上述方法,还有其他一些方法(如 collectreduceanyMatchallMatchnoneMatch 等)可以用于对流进行聚合、匹配和归约等操作。

当使用流(Stream)进行操作时,除了之前提到的 filtermapdistinctsortedlimitskip 方法外,还有一些其他常用的流操作方法:

  1. collect 方法:将流中的元素收集到一个集合或其他数据结构中。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = list.stream().filter(n -> n % 2 == 0).collect(Collectors.toList()); // 收集偶数到一个新的列表中
  1. reduce 方法:对流中的元素进行归约操作,将流中的元素合并为一个结果。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream().reduce(0, Integer::sum); // 计算元素的总和
  1. anyMatch 方法:判断流中是否存在满足指定条件的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
boolean hasEvenNumber = list.stream().anyMatch(n -> n % 2 == 0); // 判断是否存在偶数
  1. allMatch 方法:判断流中的所有元素是否都满足指定条件。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
boolean allGreaterThanZero = list.stream().allMatch(n -> n > 0); // 判断是否所有元素都大于零
  1. noneMatch 方法:判断流中是否没有满足指定条件的元素。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
boolean noneNegative = list.stream().noneMatch(n -> n < 0); // 判断是否没有负数

这些方法可以根据需要进行组合和链式调用,以实现更复杂的流式操作。

需要注意的是,上述方法中的参数可以是 lambda 表达式或方法引用,用于指定操作的条件、函数或操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值