温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java集合如何与流(Stream)API结合使用

发布时间:2024-09-25 09:38:28 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

Java集合(Collection)和流(Stream)API可以很好地结合在一起,以便更高效地处理集合中的数据。流API提供了一种声明式的方式来处理数据,允许你以函数式编程的方式操作数据。以下是一些常见的使用场景和示例:

  1. 过滤(Filtering):使用流API的filter()方法可以根据条件过滤集合中的元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
                                    .filter(n -> n % 2 == 0)
                                    .collect(Collectors.toList());
System.out.println(evenNumbers); // 输出 [2, 4, 6, 8, 10]
  1. 映射(Mapping):使用流API的map()方法可以将集合中的每个元素转换为另一种形式。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squares = numbers.stream()
                               .map(n -> n * n)
                               .collect(Collectors.toList());
System.out.println(squares); // 输出 [1, 4, 9, 16, 25]
  1. 归约(Reducing):使用流API的reduce()方法可以对集合中的元素进行归约操作,例如求和或求积。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                .reduce(0, (a, b) -> a + b);
System.out.println(sum); // 输出 15
  1. 排序(Sorting):使用流API的sorted()方法可以对集合中的元素进行排序。
List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);
List<Integer> sortedNumbers = numbers.stream()
                                    .sorted()
                                    .collect(Collectors.toList());
System.out.println(sortedNumbers); // 输出 [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
  1. 去重(Duplicates):使用流API的distinct()方法可以去除集合中的重复元素。
List<Integer> numbers = Arrays.asList(1, 2, 2, 3, 4, 4, 4, 5, 5);
List<Integer> distinctNumbers = numbers.stream()
                                       .distinct()
                                       .collect(Collectors.toList());
System.out.println(distinctNumbers); // 输出 [1, 2, 3, 4, 5]
  1. 限制和跳过(Limiting and Skipping):使用流API的limit()skip()方法可以限制或跳过集合中的一部分元素。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> firstFiveNumbers = numbers.stream()
                                     .limit(5)
                                     .collect(Collectors.toList());
System.out.println(firstFiveNumbers); // 输出 [1, 2, 3, 4, 5]

List<Integer> numbersFromSixToTen = numbers.stream()
                                         .skip(5)
                                         .collect(Collectors.toList());
System.out.println(numbersFromSixToTen); // 输出 [6, 7, 8, 9, 10]
  1. 并行处理(Parallel Processing):使用流API的parallelStream()方法可以并行地处理集合中的元素,从而提高性能。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> squares = numbers.parallelStream()
                               .map(n -> n * n)
                               .collect(Collectors.toList());
System.out.println(squares); // 输出可能是 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100],但顺序不一定保证

注意:并行流并不总是比顺序流更快,因为它涉及到线程间的数据共享和同步开销。在选择使用并行流还是顺序流时,请根据具体的应用场景和硬件环境进行评估。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI