【发布时间】:2013-06-12 12:27:21
【问题描述】:
我有一个可能包含重复值的 ArrayList tmp_list。我的目标是用每个值只出现一次来填充另一个 ArrayList filtered_tmp_list。这就是我所做的:
ArrayList<String> filtered_tmp_list = new ArrayList<String>();
filtered_tmp_list.add((String) tmp_list.get(0));
for(int i=0; i<tmp_list.size(); i++){
String cmp = (String) tmp_list.get(i) ;
int doubled = 0;
for(int j=0; j<filtered_tmp_list.size(); j++){
String cmpd = (String) tmp_list.get(j) ;
if(cmp.compareTo(cmpd)==0){
doubled ++ ;
}
}
if(doubled==0) filtered_tmp_list.add(cmp);
}
我的想法是检查 filtered_tmp_list 中已经存在的值是否存在于 tmp_list 中不止一次,如果是,我什么也不做,否则:如果 doubled 等于 0,则意味着值应该插入filtered_tmp_list。
好吧,正如您所料,我在这里是因为我得到了重复的值... 我错过了什么?
谢谢。
【问题讨论】:
-
compareTo 用于排序,不用于比较相等性
-
我知道,但这不是目前问题的核心,不是吗?
-
tmp_list中有什么内容? -
tmp_list是另一个List的填充副本,简而言之,它是一个重复值的填充List。 -
Set 会是更好的解决方案。