2016-12-10 6 views
-1

Каковы рекомендации в Java со списком? Вот моя проблема:Удалить дубликаты ключей и сохранить только самые новые

У меня есть фактически 2 объекта: объект DataPoint и объект Collector.

Коллекционер имеет атрибут List<DataPoint>. Указанный объект DataPoint определяется тремя значениями: Тип, значение и единица измерения.

Моя цель - написать метод Collector, который будет удалять дублированные элементы TYPE в моем списке DataPoint и хранить только последние. Так что в конце этого метода мой список может получить только разные типы данных DataPoint. Нет 2.

Каков наилучший способ сделать это? Я начинаю Java!

+1

сообщений коды и мы comemt на нем. – usr2564301

+2

Тогда вы должны иметь «Map ». –

ответ

0

Реализовать соответствующие hashCode и equals метод на DataPoint классе и использовать java.util.Set реализации только для хранения уникальных значений из списка.

Set<DataPoint> set = new HashSet<DataPoint>; 
set.addAll(list); 
+1

Это обеспечит сохранение 'DataPoint' уникального 'Type', но не обязательно ** последнего **. – Mureinik

0

Вы можете пройти по списку от его конца, за исключением уникальных типов (например, с использованием Set), и удалить любую точку имеет тип, который вы уже сталкивались. Например. (Предполагается, что элемент данных называется points):

public void retainUniqueTypes() { 
    Set<Type> types = new HashSet<>(); 
    while (iter.hasPrevious()) { 
     DataPoint current = iter.previous(); 
     if (!types.add(current.getType())) { 
      iter.remove(); 
     } 
    } 
} 
0

Лучший способ справиться с этим. Измените List<DataPoint> на Set<DataPoint>, почему потому, что Set не будет иметь дубликатов.
Кроме того, убедитесь, что у вас есть надлежащее выполнение equals и hashcode в DataPoint

+0

Чтобы сделать это, то, что ожидает OP, вы должны иметь реализацию fnuky 'equals' и' hashCode', которая учитывает только тип. Тем не менее, это обеспечит сохранение DataPoints уникального типа, но не обязательно ** последнего **. – Mureinik