gpt4 book ai didi

java - 如何删除arraylist重复值

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:56:07 26 4
gpt4 key购买 nike

我正在旧系统上执行一些维护任务。我有一个包含的数组列表以下值:

a,b,12
c,d,3
b,a,12
d,e,3
a,b,12

我使用以下代码从 arraylist 中删除重复值

ArrayList<String> arList;
public static void removeDuplicate(ArrayList arlList)
{
HashSet h = new HashSet(arlList);
arlList.clear();
arlList.addAll(h);
}

如果它找到相同的重复值,它工作正常。但是,如果你仔细看我的数据,有一些重复的条目,但顺序不同。例如,a,b,12 和 b,a,12 是相同但顺序不同。

如何从arraylist中删除这种重复条目?

谢谢

最佳答案

假设条目是字符串。然后您可以对每个条目进行排序,然后进行重复检查。然后您可以将条目存储在 map 中并使用 contains(key) 查看它们是否存在。

编辑:添加了完整的代码示例。

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
List<String> someList = new ArrayList<String>();
someList.add("d,e,3");
someList.add("a,b,12");
someList.add("c,d,3");
someList.add("b,a,12");
someList.add("a,b,12");
//using a TreeMap since you care about the order
Map<String,String> dupMap = new TreeMap<String,String>();
String key = null;
for(String some:someList){
key = test.sort(some);
if(key!=null && key.trim().length()>0 && !dupMap.containsKey(key)){
dupMap.put(key, some);
}
}
List<String> uniqueList = new ArrayList<String>(dupMap.values());
for(String unique:uniqueList){
System.out.println(unique);
}

}
private String sort(String key) {
if(key!=null && key.trim().length()>0){
char[] keys = key.toCharArray();
Arrays.sort(keys);
return String.valueOf(keys);
}
return null;
}
}

打印:

a,b,12

c,d,3

d,e,3

关于java - 如何删除arraylist重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com