在Java 8中,skip、limit、map和collect是流(Stream)类的常用方法,用于对集合进行处理和转换。下面我将逐个介绍它们的作用和用法:
-
skip方法:skip方法用于跳过流中的前N个元素,并返回一个新的流。它接受一个long类型的参数,表示要跳过的元素数量。示例代码如下:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = numbers.stream()
.skip(2)
.collect(Collectors.toList());
// 输出结果为 [3, 4, 5]
在上述示例中,我们创建了一个整数列表numbers,然后使用stream()方法将其转换为流。接着使用skip(2)方法跳过前两个元素,最后使用collect(Collectors.toList())方法将剩余的元素收集到一个新的列表中。
2. limit方法:limit方法用于限制流中元素的数量,并返回一个新的流。它接受一个long类型的参数,表示要保留的元素数量。示例代码如下:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> result = numbers.stream()
.limit(3)
.collect(Collectors.toList());
// 输出结果为 [1, 2, 3]
在上述示例中,我们创建了一个整数列表numbers,然后使用stream()方法将其转换为流。接着使用limit(3)方法保留前三个元素,最后使用collect(Collectors.toList())方法将这三个元素收集到一个新的列表中。
3. map方法:map方法用于将流中的每个元素映射到另一个元素,并返回一个新的流。它接受一个Function类型的参数,表示要应用于每个元素的映射函数。示例代码如下:
List<String> names = Arrays.asList("John", "Jane", "Tom");
List<Integer> nameLengths = names.stream()
.map(String::length)
.collect(Collectors.toList());
// 输出结果为 [4, 4, 3]
在上述示例中,我们创建了一个字符串列表names,然后使用stream()方法将其转换为流。接着使用map(String::length)方法将每个字符串映射为其长度,最后使用collect(Collectors.toList())方法将长度收集到一个新的列表中。
4. collect方法:collect方法用于将流中的元素收集到一个集合或其他数据结构中。它接受一个Collector类型的参数,表示收集操作的具体规则。示例代码如下:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Set<Integer> result = numbers.stream()
.collect(Collectors.toSet());
// 输出结果为 [1, 2, 3, 4, 5]
在上述示例中,我们创建了一个整数列表numbers,然后使用stream()方法将其转换为流。接着使用collect(Collectors.toSet())方法将流中的元素收集到一个Set集合中。
这些方法在Java 8的流操作中非常常用,它们可以帮助我们对集合进行灵活的处理和转换。除了上述介绍的方法,流还提供了许多其他的操作,如过滤、排序等,可以根据具体需求选择使用。
浙公网安备 33010602011771号