Удаление дубликата из Arraylist и получение дубликата одного свойства в списке - PullRequest
0 голосов
/ 14 октября 2010

У меня есть один arraylist, который говорит "templist", у него будут предметы, например "Stool"

теперь список содержит дубликаты

1 abc wwww.com lob1
1 abc wwww.com lob2

Теперь я хочу, как

1 abc wwww.com (lob1, lob2)

может быть отдельным списком одних только лобов. как мы можем это сделать? пожалуйста помогите

List tempList = new ArrayList();

Я добавил элементы типа ServiceItem (который имеет свойство, такое как id, name, url, lob)).
Как сказано, я буду дублировать для id, name, url, поскольку эти три могут быть сопоставлены с различными lobs.

Я хочу, чтобы первые три свойства были одной записью, а последнее свойство должно быть списком отличных lobs.

Я внес изменения в код. сейчас. Вот код Подскажите, как добиться результата как 1 | ABC, BCA

открытый класс ListTest {

public static void main(String args[]){

    List TestList = new ArrayList();

    MyBean myBean = new MyBean();
    MyBean myBean2 = new MyBean();
    myBean.setId("1");
    myBean.setLob("ABC");
    myBean2.setId("1");
    myBean2.setLob("BCA");

    TestList.add(myBean);
    TestList.add(myBean2);

}   

}

публичный класс MyBean {

    private String id;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getLob() {
        return lob;
    }
    public void setLob(String lob) {
        this.lob = lob;
    }
    private String lob;

}

Ответы [ 3 ]

2 голосов
/ 14 октября 2010

Создание набора из вашего списка удалит дубликаты, например:

Set set = new HashSet(templist)
1 голос
/ 14 октября 2010

Я бы сделал следующее:

  1. Используйте Карту вместо Списка.
  2. Удалить lob из ServiceItem.
  3. Переопределить equals и hashCode методы ServiceItem (чтобы убедиться, что дубли не будут вставлены).
  4. Вставить новую запись в карту, где ключом является этот ServiceItem, а значением является список (или лучше установить, если улитки уникальны). Проверьте, если contains (ServiceItem) - затем добавьте новый lob в список (набор) значения.
0 голосов
/ 15 октября 2010

Наконец-то я решил проблему, используя apache collection multihashmap.но с версии 3.2 это устарело, поэтому я использовал версию 3.1.

вот окончательный код.

public class ListTest {

public static void main(String args[]){

    List<MyBean> TestList = new ArrayList<MyBean>();

    MyBean myBean = new MyBean();
    MyBean myBean2 = new MyBean();
    myBean.setId("1");
    myBean.setLob("ABC");
    myBean2.setId("1");
    myBean2.setLob("BCA");

    TestList.add(myBean);
    TestList.add(myBean2);

    for(int i=0;i<TestList.size();i++){
        MyBean result = (MyBean)TestList.get(i);
        System.out.println("ID:"+result.getId());
        System.out.println("Lob:"+result.getLob());
    }

     MultiMap mhm = new MultiHashMap();
     for(int i=0;i<TestList.size();i++){
         MyBean result = (MyBean)TestList.get(i);
         mhm.put(result.getId(), result.getLob());
     }

     List list = (List) mhm.get("1");

     for(int i=0;i<list.size();i++){
         System.out.println(list.get(i));
     }

}   

} ``

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...