//forEach() 循环遍历
List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.forEach((x) -> System.out.println(x));
//运行结果: 100 200 300 400 500
//二:filte() 过滤
List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().filter((x) -> x > 100).forEach((a)->System.out.print(a + " "));
//运行结果: 200 300 400 500
//三:lambda内部表达式中不能改变外部的变量
List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
int sum = 10;
costBeforeTax.stream().forEach((x) -> sum +=x);
//四:map() 将集合类中的元素进行转换
List<Integer> costBeforeTax = Arrays.asList(100, 200, 300, 400, 500);
costBeforeTax.stream().map(x -> x + 0.12 * x).forEach(x->System.out.print(x + " "));
//运行结果:112.0 224.0 336.0 448.0 560.0
//五:distinct() 对集合进行去重
List<Integer> numbers = Arrays.asList(9, 10, 3, 4, 7, 3, 4);
List<Integer> newlist = numbers.stream().distinct().collect(Collectors.toList());
System.out.print(newlist);
//進階方式:
//list是需要去重的list,返回值是去重后的list
//o代表object对象,o.list对象的属性值,根据此属性值去重
List<Product> distinctList = products.stream().collect(
Collectors.collectingAndThen(Collectors.toCollection(() ->
new TreeSet<>(Comparator.comparing(o -> o.getTitle()))),ArrayList::new));
// 运行结果:[9, 10, 3, 4, 7]
//distinct()之后是一个新集合。
– 分组求和表达式
//分组
Map<String, List<User>> groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex));
//遍历分组
for (Map.Entry<String, List<User>> entryUser : groupBySex.entrySet()) {
String key = entryUser.getKey();
List<User> entryUserList = entryUser.getValue();
–基本常用表达式
package com.svnlan.order.controller;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TestClass {
public static void main(String[] args) {
User user1 = new User(5, "aa");
User user2 = new User(2, "ba");
User user3 = new User(3, "ac");
User user4 = new User(1, "aad");
User user5 = new User(4, "asd");
List<User> userList = Arrays.asList(user1, user2, user3, user4, user5);
//获取所有ID集合
List<Integer> idList = userList.stream().map(User::getId).collect(Collectors.toList());
//排序ID
List<User> userList1 = userList.stream().sorted(Comparator.comparingInt(User::getId)).collect(Collectors.toList());
//分组
Map<String, Long> map = userList.stream().collect(Collectors.groupingBy(User::getName, Collectors.counting()));
//获取id大于2的
List<User> userList2 = userList.stream().filter(user -> user.getId() > 2).collect(Collectors.toList());
//获取最大
Integer id = userList.stream().map(User::getId).max(Integer::compareTo).get();
//获取最小
Integer id1 = userList.stream().map(User::getId).min(Integer::compareTo).get();
//获取id数量
long count = userList.stream().map(User::getId).count();
//总和
int sum = userList.stream().mapToInt(User::getId).sum();
//获取平均值
double d = userList.stream().mapToInt(User::getId).average().getAsDouble();
//匹配findAny/allMatch/noneMatch多用来判断
User user = userList.stream().findAny().get();
//获取第一个对象
User user6 = userList.stream().findFirst().get();
//将名字全转换为大写
List<String> list = userList.stream().map(User::getName).map(String::toUpperCase).collect(Collectors.toList());
//获取忽略第一个并取前几条数据
List<User> list1 = userList.stream().skip(1).limit(2).collect(Collectors.toList());
//去重
List<User> collect = userList.stream().distinct().collect(Collectors.toList());
//判断集合对象中是否存在某个值
List<User> list = new ArrayList<>();
boolean bool = list.stream().anyMatch(a -> a.getName().equals("徐") && a.getSize().equals("男"));
//求集合某个字段的合计
Integer num = people1.stream().mapToDouble(User::getId).sum();
}
}