List<Integer> list = Arrays.asList(1, 2,1, 4, 5, 3,-1);
List<User> users = Arrays.asList(new User(1, "admin",12), new User(2, "bjh",18),new User(-1, "bjh",17));
List l1 = new ArrayList();
//取出集合总的数量
long count = list.stream().count();
System.out.println(count);
//遍历集合中的所有元素
list.stream().forEach(u->l1.add(u));
System.out.println(l1);
//取出集合中第一个元素
list.stream().limit(1).forEach(System.out::println);
Integer maxNum = list.stream().max(Integer::compare).get();
System.out.println("最大值是 =" + maxNum);
Integer minNum = list.stream().min(Integer::compare).get();
System.out.println("最小值是 =" + minNum);
//取出最大的元素
int id = users.stream().max((o1, o2) -> {
return o1.getId() > o2.getId() ? 1 : -1;
}).get().getId();
System.out.println("最大的id = " + id);
//取出最小的元素
int id1 = users.stream().min((o1,o2)->{
return o1.getId() > o2.getId() ? 1 : -1;
}).get().getId();
System.out.println("最小的id = " + id1);
//判断条件里的元素,所有的都满足,返回true 否则false
boolean allMatch = list.stream().allMatch(e -> e == 1);
System.out.println("allMatch = " +allMatch);
//判断条件里的元素,只要有一个元素满足,返回true 否则false
boolean anyMatch = list.stream().anyMatch(e -> e == 1);
System.out.println("anyMatch = " +anyMatch);
//判断条件里的元素,所有的都不满足,返回true 否则false
boolean noneMatch = list.stream().noneMatch(e -> e == 8);
System.out.println("noneMatch = " + noneMatch);
//去除重复的元素
list.stream().distinct().forEach(System.out::print);
//将集合转换成另外一个集合
List<Integer> list1 = list.stream().collect(Collectors.toList());
System.out.println(list1);
//过滤 将不满足条件的元素从集合中剔除
list.stream().filter(e -> {
return e == 1;
}).forEach(System.out::print);
list.stream().filter(e->e==1).forEach(System.out::print);
System.out.println();
System.out.println("随机返回一个元素 "+list.stream().findAny());
System.out.println("返回集合第一个元素" +list.stream().findFirst());
//map是映射,将元素进行操作,比如这里是将每个元素 乘以2
List<Integer> list2 = list.stream().map(u -> u << 1).collect(Collectors.toList());
System.out.println(list2);
List<String> list3 = Arrays.asList("Hello", "World");
list3.stream().map(u->u.split("")).flatMap(Arrays::stream).distinct().collect(Collectors.toList()).forEach(System.out::print);
//list.stream().peek(e-> System.out.println()).forEach(e-> System.out.println(e));
//peek在中间可以进行一些操作
users.stream().peek(u->u.setName(u.getName()+"_test")).forEach(u-> System.out.println(u.getName()));
//对集合中的所有元素进行聚合求值
Integer integer = list.stream().reduce((a, b) -> a + b).get();
System.out.println(integer);
//对集合中的所有元素进行聚合求值,但是会给定一个初始值
Integer reduce = list.stream().reduce(0, (a, b) -> a + b);
//对集合中的所有元素进行聚合求值,但是会给定一个初始值,并且将结果转换成我们想要的类型
Long reduce1 = list.stream().reduce(0L, (a, b) -> a + b, (a, b) -> 0L);
System.out.println();
//跳过前面三个元素,输出后面的元素.比如:[1,2,3,4,5,6]-->输出[4,5,6]
list.stream().skip(3).forEach(System.out::print);
System.out.println();
//从小到大排序
list.stream().sorted((a,b)->a.compareTo(b)).collect(Collectors.toList()).forEach(u-> System.out.println(u));
System.out.println("====");
//从大到小排序
list.stream().sorted((a,b)->b.compareTo(a)).collect(Collectors.toList()).forEach(System.out::println);
//将用户按年龄从小到大排序
users.stream().sorted((a,b)-> a.getAge().compareTo(b.getAge())).collect(Collectors.toList()).forEach(u-> System.out.println(u.getAge()));
//将集合转换成数组
User[] users1 = users.stream().toArray(User[]::new);
for (User user : users1) {
System.out.println(user.getName());
}