Ich habe mich für ein TreeSet entschieden, da TreeSet tatsächlich die Werte zu einer unterstützten TreeMap hinzufügt:
Code: Select all
public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
Ich habe einen Comparator geschrieben, der bei gleichen Elementen 1 statt 0 zurückgibt. Daher überschreibt das TreeSet mit diesem Comparator bei gleichen Elementen das Duplikat nicht und sortiert es einfach.
Ich habe es für einfache String-Objekte getestet, aber ich benötige einen Satz benutzerdefinierter Objekte.
Code: Select all
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);
}
}
}
BEARBEITEN
Eigentlich habe ich eine ArrayList der folgenden Klasse:
Code: Select all
class Fund
{
String fundCode;
BigDecimal fundValue;
.....
public boolean equals(Object obj) {
// uses fundCode for equality
}
}
Mobile version