美文网首页
List中去除某些对象某个字段的重复值

List中去除某些对象某个字段的重复值

作者: Miki_Zhang | 来源:发表于2017-09-27 14:14 被阅读36次

    问题描述如下:

    有一个List  list 放了五个对象:user1、user2、user3、user4、user5

    User有三个属性Id、name、age

    其中user2的记录大概是这样:“100”,"abc",20;

    user3的记录大概是这样:“100”,“def”,20;

    请问怎么才能只保留user2和user3中的一个对象,并将其中的name合并到新对象中,

    新对象如“100”,“abcdef”,20

    这只是举个例子,实际中有可能user4和user5与此类似,如果有id相同的两个对象,则对其进行

    合并,只保留一个对象,求一个通用的方法,能筛选出对象集合中某些相同ID的两个对象,将其合并

    仍保留在原list中

    importjava.util.ArrayList;

    importjava.util.HashMap;

    importjava.util.List;

    publicclassTestDemo1 {

    publicstaticvoidmain(String[] args) {

    List list =newArrayList<>();

    list.add(newUser(1,"a",20));

    list.add(newUser(1,"a",20));

    list.add(newUser(2,"a",20));

    list.add(newUser(3,"b",20));

    list.add(newUser(1,"c",20));

    list.add(newUser(4,"d",20));

    list.add(newUser(2,"e",20));

    list.add(newUser(1,"a",20));

    list = mySort(list);

    for(User user : list) {

    System.out.println(user.toString());

    }

    }

    publicstaticList mySort(List list){

    HashMap tempMap =newHashMap<>();

    for(User user : list) {

    intkey = user.getId();

    if(tempMap.containsKey(key)){

    User tempUser =newUser(key,tempMap.get(key).getName() + user.getName(),tempMap.get(key).getAge());

    tempMap.put(key, tempUser);

    }else{

    tempMap.put(key, user);

    }

    }

    List tempList =newArrayList<>();

    for(intkey : tempMap.keySet()){

    tempList.add(tempMap.get(key));

    }

    returntempList;

    }

    }

    classUser{

    privateintid;

    privateString name;

    privateintage;

    publicUser(){}

    publicUser(intid, String name,intage) {

    super();

    this.id = id;

    this.name = name;

    this.age = age;

    }

    publicintgetId() {

    returnid;

    }

    publicvoidsetId(intid) {

    this.id = id;

    }

    publicString getName() {

    returnname;

    }

    publicvoidsetName(String name) {

    this.name = name;

    }

    publicintgetAge() {

    returnage;

    }

    publicvoidsetAge(intage) {

    this.age = age;

    }

    @Override

    publicString toString() {

    return"User [id="+ id +", name="+ name +", age="+ age +"]";

    }

    }

    SQL: SELECT

    a1.id,

    a1. NAME,

    GROUP_CONCAT(a2.type),

    a1.click,

    a1.hits,

    a1.add_time,

    a1. STATUS

    FROM

    advertise a1

    LEFT JOIN advertise_show_type a2 ON a1.id = a2.advertise_id

    WHERE

    a1.del = 0 and a2.del = 0

    group by id

    相关文章

      网友评论

          本文标题:List中去除某些对象某个字段的重复值

          本文链接:https://www.haomeiwen.com/subject/tfduextx.html