欢迎访问宙启技术站
智能推送

在Java中使用函数进行集合操作和过滤函数。

发布时间:2023-06-21 01:32:39

Java中提供了丰富的集合操作和过滤函数,可以帮助我们更方便地对集合进行操作。本文将主要介绍Java中常用的集合操作和过滤函数。

1.集合操作

在Java中,常用的集合操作包括:筛选、映射、聚合、排序等。

1.1 筛选操作

筛选操作指的是从集合中筛选出符合条件的元素。常用的筛选函数有filter和findFirst。

filter函数:

public static <T> Stream<T> filter(Predicate<? super T> predicate)

参数说明:传入一个Predicate类型的参数,该参数使用test()方法来筛选集合中的元素。

返回值:返回一个Stream对象。

示例代码:

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

Stream<Integer> stream = list.stream().filter(x -> x % 2 == 0);

stream.forEach(System.out::println);

输出结果:

2

4

6

8

10

findFirst函数:

public Optional<T> findFirst()

参数说明:该函数不接收任何参数,直接返回集合中的 个元素。

返回值:返回一个Optional对象,该对象可能包含一个非空的元素,也可能为空。

示例代码:

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

Optional<Integer> result = list.stream().findFirst();

if (result.isPresent()) {

  System.out.println(result.get());

}

输出结果:

1

1.2 映射操作

映射操作指的是将集合中的每个元素映射成另一个元素。常用的映射函数有map。

map函数:

public static <T,R> Stream<R> map(Function<? super T,? extends R> mapper)

参数说明:传入一个Function类型的参数,该参数使用apply()方法将集合中的元素映射成另一个元素。

返回值:返回一个Stream对象。

示例代码:

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

Stream<Integer> stream = list.stream().map(x -> x * 2);

stream.forEach(System.out::println);

输出结果:

2

4

6

8

10

12

14

16

18

20

1.3 聚合操作

聚合操作指的是将集合中的元素聚合成一个新的值。常用的聚合函数有reduce。

reduce函数:

public Optional<T> reduce(BinaryOperator<T> accumulator)

参数说明:传入一个BinaryOperator类型的参数,该参数使用apply()方法将集合中的元素聚合成一个新的值。

返回值:返回一个Optional对象,该对象可能包含一个非空的结果,也可能为空。

示例代码:

List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);

Optional<Integer> result = list.stream().reduce((a,b) -> a + b);

if (result.isPresent()) {

  System.out.println(result.get());

}

输出结果:

55

1.4 排序操作

排序操作指的是将集合中的元素按照一定的规则进行排序。常用的排序函数有sorted、reversed和distinct。

sorted函数:

public Stream<T> sorted()

参数说明:该函数不接收任何参数,按照自然顺序对元素进行排序。

返回值:返回一个Stream对象。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

Stream<Integer> stream = list.stream().sorted();

stream.forEach(System.out::println);

输出结果:

1

2

3

4

5

6

7

8

9

10

reversed函数:

public Stream<T> reversed()

参数说明:该函数不接收任何参数,对元素进行反转。

返回值:返回一个Stream对象。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

Stream<Integer> stream = list.stream().sorted().reversed();

stream.forEach(System.out::println);

输出结果:

10

9

8

7

6

5

4

3

2

1

distinct函数:

public Stream<T> distinct()

参数说明:该函数不接收任何参数,去重。

返回值:返回一个Stream对象。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9,8,2);

Stream<Integer> stream = list.stream().distinct();

stream.forEach(System.out::println);

输出结果:

2

4

1

8

5

3

7

6

10

9

2.过滤函数

过滤函数指的是对集合中的元素进行判断,筛选出符合要求的元素。常用的过滤函数有filter、findAny、anyMatch、noneMatch、allMatch。

2.1 filter函数

filter函数的用法已经在集合操作中介绍过,这里不再赘述。

2.2 findAny函数:

public Optional<T> findAny()

参数说明:该函数不接收任何参数,返回集合中的任意一个元素,如果集合为空则返回null。

返回值:返回一个Optional对象,该对象可能包含一个非空的元素,也可能为空。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

Optional<Integer> result = list.stream().filter(x -> x % 2 == 0).findAny();

if (result.isPresent()) {

  System.out.println(result.get());

}

输出结果:

2

2.3 anyMatch函数:

public boolean anyMatch(Predicate<? super T> predicate)

参数说明:传入一个Predicate类型的参数,该参数使用test()方法对集合中的元素进行判断。

返回值:如果集合中存在任意一个元素符合要求,则返回true,否则返回false。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

boolean result = list.stream().anyMatch(x -> x % 2 == 0);

System.out.println(result);

输出结果:

true

2.4 noneMatch函数:

public boolean noneMatch(Predicate<? super T> predicate)

参数说明:传入一个Predicate类型的参数,该参数使用test()方法对集合中的元素进行判断。

返回值:如果集合中不存在任何一个元素符合要求,则返回true,否则返回false。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

boolean result = list.stream().noneMatch(x -> x > 10);

System.out.println(result);

输出结果:

true

2.5 allMatch函数:

public boolean allMatch(Predicate<? super T> predicate)

参数说明:传入一个Predicate类型的参数,该参数使用test()方法对集合中的元素进行判断。

返回值:如果集合中所有元素都符合要求,则返回true,否则返回false。

示例代码:

List<Integer> list = Arrays.asList(2,4,1,8,5,3,7,6,10,9);

boolean result = list.stream().allMatch(x -> x % 2 == 0);

System.out.println(result);

输出结果:

false

3.总结

本文主要介绍了Java中常用的集合操作和过滤函数。在实际开发中,应根据需要选择合适的集合操作和过滤函数,以便更高效地处理集合数据。