Java8 Lambda表达式:Collection操作实战

需积分: 1 0 下载量 26 浏览量 更新于2024-08-03 收藏 2KB TXT 举报
Java8引入了Lambda表达式,这是一种匿名函数的概念,极大地简化了代码编写,特别是在处理集合操作时。Lambda表达式常用于各种Collection(如List、Set)的处理,提供了更直观和简洁的编程方式。 1. 取List中特定值并转换类型: Lambda表达式可以用来对List中的每个元素执行一个操作并收集结果。例如,如果你想获取Person对象列表中所有id,可以使用`List<Integer> result = list.stream().map(Person::getId).collect(Collectors.toList());`,这行代码表示将Person对象的id字段映射到一个新的Integer列表。 2. 创建Map(键值对): 对于需要根据某个字段生成键值对的情况,如`Map<Integer, String> stringMap = list.stream().collect(Collectors.toMap(Person::getId, Person::getName));`,这里使用了toMap方法,第一个参数是提供key,第二个参数是提供value,将Person对象的id和name分别作为键和值。 3. Grouping by: Lambda表达式也支持根据某个字段进行分组,如`Map<String, List<Person>> stringListMap = list.stream().collect(Collectors.groupingBy(Person::getName));`,这将根据Person对象的名字进行分组,返回一个Map,其中键是名字,值是具有相同名字的所有Person对象列表。 4. 取两个List的交集与差集: - 交集:`List<Integer> intersect = listA.stream().filter(a -> listB.stream().anyMatch(b -> Objects.equals(a, b))).collect(Collectors.toList());`,这段代码找出两个List中相同的元素,并存入新List。 - 差集:`List<Integer> intersect1 = listA.stream().filter(a -> !listB.stream().anyMatch(b -> Objects.equals(a, b))).collect(Collectors.toList());`,这行代码找出listA中不在listB中的元素。 Lambda表达式通过其简洁的语法和直观的逻辑,提高了Java在处理集合操作时的代码可读性和效率。熟练掌握这些用法,能让你在实际开发中更加高效地编写代码。