2013-07-30 5 views
-1

У меня есть класс с именем ResourceObjectНайти уникальные элементы и счет приращения

public class ResourceObject 
{ 
    int id; 
    String Name; 
    int count; 
} 

Для этого класса, я уже заменяю equals метод таким образом, что объекты равны, если только id и name одинаковы.

Теперь я в список ResourceObject объектов List<ResourceObject> resList.

Допустит, содержимое

id name count 

1 A  1 
1 A  2 
1 A  1 
2 B  1 
2 B  2 
3 C  2 

Все, что я хочу сделать, это найти уникальный список и увеличить счетчик. то есть результат должен быть

id name count 

1 A  4 
2 B  3 
3 C  2 

Как это сделать? Спасибо.

+0

сначала попробовать .. –

+0

я пытался. и я также получил решение. – Teja

ответ

0

Здесь я получил решение.

List<ResourceObject> originalList список, содержащий оригинальные элементы

List<ResourceObject> newList=new ArrayList<ResourceObject>(); 

for(int i=0;i<originalList.size();i++){ 
    if(newList.contains(originalList.get(i))==false){ 
     newList.add(originalList.get(i)); 
    } 
    else{ 
     for(int j=0;j<newList.size();j++){ 
      if(newList.get(j).equals(originalList.get(i))){ 
       int var=newList.get(j).getCount(); 
       int var1=var+originalList.get(i).getCount(); 
       newList.get(j).setCount(BigDecimal.valueOf(var1)); 
      } 
     } 
    } 
} 
1

Итерация через List и добавлять элементы в Set если Set не содержит элемент, если Set уже есть элемент, получить элемент из Set и увеличить его count.

В конце цикла вы можете конвертировать Set в List, если требуется.

+0

это просто логика! Я сделал это, не используя набор! – Teja

0

Ну, как идея в псевдокоде.

for(ResourceObject o : resList) { 
    int count = sumAllCounts(o); 
    saveCountAndObjectSomewhere(o, count); 
} 
showResults(); 

Конечно, это покажет вам несколько строк для каждого из одинаковых объектов, но вы можете избавиться от дубликатов, поместив их в наборе, например.

Смежные вопросы