亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

【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 關注
  • 1618 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號