【发布时间】:2012-12-26 12:04:44
【问题描述】:
更新:
我猜HashSet.add(Object obj) 不会打电话给contains。有没有办法实现我想要的(删除 dup 字符串忽略大小写使用Set)?
原问题:
试图从java中的String列表中删除dups,但是在下面的代码中CaseInsensitiveSet.contains(Object ob)没有被调用,为什么?
public static List<String> removeDupList(List<String>list, boolean ignoreCase){
Set<String> set = (ignoreCase?new CaseInsensitiveSet():new LinkedHashSet<String>());
set.addAll(list);
List<String> res = new Vector<String>(set);
return res;
}
public class CaseInsensitiveSet extends LinkedHashSet<String>{
@Override
public boolean contains(Object obj){
//this not getting called.
if(obj instanceof String){
return super.contains(((String)obj).toLowerCase());
}
return super.contains(obj);
}
}
【问题讨论】:
-
请学习如何使用代码格式化而不是使用
<pre>语句。 -
你为什么要清除我的编辑?
-
是否要保留列表中字符串的顺序?如果是这样,对于重复项,您要占据第一次出现的位置还是最后一次出现的位置?
标签: java collections set