Collection
。我选择了
TreeSet
,因为TreeSet
实际上是将值添加到支持的TreeMap
中:public boolean add(E e) {
return m.put(e, PRESENT)==null;
}
TreeMap将使用Comparators
的compare
逻辑来删除重复项。
我编写了一个Comparator
,在元素相等的情况下返回1而不是0。因此,在具有此Comparator
的TreeSet
中,对于相等的元素,它将不会覆盖重复项,而只是对其进行排序。
我已经为简单的String
对象进行了测试,但我需要一组自定义对象。
public static void main(String[] args)
{
List<String> strList = Arrays.asList( new String[]{"d","b","c","z","s","b","d","a"} );
Set<String> strSet = new TreeSet<String>(new StringComparator());
strSet.addAll(strList);
System.out.println(strSet);
}
class StringComparator implements Comparator<String>
{
@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
}
}
我需要所有最高
fundValue
的fundCode
。
Set是一种不能包含重复元素的集合。
违反这个契约并不是一个好主意。 - NeplatnyUdaj