在java中从ArrayList中删除“regex duplicates”
我想用java“清理”一个ArrayList,下面是解释
假设我们有这个列表:
a = ["a_12_b", "a_13_b", "a_13bis_b", "a_14_b", "a_14_new_b"]
在这个列表中,"a_13bis_b"
和"a_14_new_b"
被认为是重复的,为什么?因为每个条目都有这个正则表达式:a_ "a string with a lenght =2" _b
输出应为:
a = ["a_12_b", "a_13_b", "a_14_b"]
我使用了这个简单的代码,但它返回了错误的输出:
for (int j = 0; j < list.size(); j++) {
//basically clean entry will remove the a_ and _b
String value1= cleanEntry(list.get(j));
for (int k = 0; k < list.size(); k++) {
String value2= cleanEntry(list.get(k));
if (k != j && value1.equalsIgnoreCase(value2)) {
duplicates.add(list.get(k))
list.remove(k);
}
}
}
有什么帮助吗
# 1 楼答案
你只需在比较前丢弃第二个字符之后的所有字符。 试试这个
# 2 楼答案
可以使用带有正则表达式的流映射方法将字符串“规格化”为公共格式,然后创建一组规格化字符串
比如:
这张照片是:
Java 7、6的解决方案:
结果:
如果需要两个以上的数字字符,可以更改正则表达式。下面是一个结果示例:
结果: