版权声明:望支持~~~ https://blog.csdn.net/u011663149/article/details/86743930
前言:java8提供了很多操作集合的,以下是写的一些简单的案例。希望能有用 (* ̄︶ ̄)。
一些高级的操作后续进行更新。。。
/**
* @author DHing
*/
public class Streams {
static class User{
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
public static void main(String[] args) {
List<User> user = new ArrayList<>();
User u = new User();
u.setAge(1);
u.setName("hello");
user.add(u);
user.forEach(u1 -> {
System.out.println(u1.getAge() + " " + u1.getName());
});
//匹配名字为hello的对象集合
List<User> collect = user.stream().filter(a -> "hello".equals(a.getName())) .collect(Collectors.toList()); //没有去重
List<User> collect3 = user.stream().filter(a -> "hello".equals(a.getName())).distinct().collect(Collectors.toList()); //去重
//limit
List<User> collect2 = user.stream().limit(2).collect(Collectors.toList());
System.out.println(collect2);
//求年龄总和
user.stream().map(a -> a.getAge()).reduce(0, Integer::sum);
//等同上面 求和
user.stream().mapToInt(User :: getAge).sum();
//平均
user.stream().mapToInt(User :: getAge).average();
//最小
user.stream().mapToInt(User :: getAge).min();
//最大
user.stream().mapToInt(User :: getAge).max();
//年龄 乘 10
user.stream().mapToDouble(w -> w.getAge() * 10).sum();
//排序
user.stream().sorted((s1, s2) -> s1.getAge().compareTo(s2.getAge())).collect(Collectors.toList());
//分组
user.stream().collect(Collectors.groupingBy(User::getAge));
//取指定字段为一个新的集合
user.stream().map(us -> {
User u1 = new User();
u1.setAge(us.getAge() + 10);
return u1;
}).collect(Collectors.toList());
//同理转为一个map集合
user.stream().map(us -> {
Map u1 = new HashMap();
u1.put("age", us.getAge());
u1.put("name", us.getName());
return u1;
}).collect(Collectors.toList());
}
}
~之前的博客服务器到期,望支持~