class User{
private String id;
private String code;
private String name;
}
List list;
这么个列表,我想单独取出code,假设有5个数据,有三个code是1,两个code是2,我想用java8的stream的方法操作
取出一个列表或者set,例如List这样,里面放了一个1和一个2,就是同时去重,怎么写诶
public static void main(String[] args) {
List<User> users = new ArrayList<>();
users.add(new User("1","1","张三"));
users.add(new User("2","1","李四"));
users.add(new User("3","2","王五"));
users.add(new User("4","2","小明"));
users.add(new User("5","1","小三"));
Set<String> codeExists = new HashSet<>();
users = users.stream().filter((V)->{
String code = V.getCode();
if(codeExists.contains(code)){
return false;
}else{
codeExists.add(code);
return true;
}
}).collect(Collectors.toList());
System.out.println(users);
class User{
String code;
public String getCode() {
return code;
}
}
public class Test {
public static void main(String args[]){
List<User> users = new ArrayList<>();
users.stream()
.collect(Collectors.groupingBy(User::getCode))
.keySet();
}
}
先分组,分完组后只拿keySet就行了
users.stream()
.map(User::getCode)
.collect(toList())