为了账号安全,请及时绑定邮箱和手机立即绑定

【java】怎么在8特性中的stream将列表的实体数据取出并去重

【java】怎么在8特性中的stream将列表的实体数据取出并去重

大话西游666 2018-07-11 15:31:58
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,就是同时去重,怎么写诶
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

 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);


查看完整回答
反对 回复 2018-07-26
?
POPMUISE

TA贡献1765条经验 获得超5个赞

 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就行了


查看完整回答
反对 回复 2018-07-26
  • 2 回答
  • 0 关注
  • 1586 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号