TreeSet или TreeMap, допускающие дублирование.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 TreeSet или TreeMap, допускающие дублирование.

Сообщение Anonymous »

Мне нужна коллекция, которая сортирует элемент, но не удаляет дубликаты.

Я выбрал TreeSet, поскольку TreeSet фактически добавляет значения в поддерживаемую TreeMap:

Код: Выделить всё

public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
И TreeMap удаляет дубликаты с помощью логики сравнения компараторов

Я написал компаратор, который возвращает 1 вместо 0 в случае равных элементов. Следовательно, в случае равных элементов TreeSet с этим компаратором не будет перезаписывать дубликат, а просто отсортирует его.

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

Код: Выделить всё

public static void main(String[] args)
{
List strList = Arrays.asList( new String[]{"d","b","c","z","s","b","d","a"} );
Set strSet = new TreeSet(new StringComparator());
strSet.addAll(strList);
System.out.println(strSet);
}

class StringComparator implements Comparator
{
@Override
public int compare(String s1, String s2)
{
if(s1.compareTo(s2) == 0){
return 1;
}
else{
return s1.compareTo(s2);
}
}
}
Подходит ли этот подход или есть лучший способ добиться этого?

РЕДАКТИРОВАТЬ

На самом деле у меня есть ArrayList следующего класса:

Код: Выделить всё

class Fund
{
String fundCode;
BigDecimal fundValue;
.....

public boolean equals(Object obj) {
// uses fundCode for equality
}
}
Мне нужен весь код фонда с наибольшим значением фонда

Подробнее здесь: https://stackoverflow.com/questions/222 ... duplicates
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»