gpt4 book ai didi

java - 检查 list2.containsAll(list1) 是否不完全相同的字符串

转载 作者:行者123 更新时间:2023-11-30 07:54:24 26 4
gpt4 key购买 nike

我有 List1 和 List2,如果 List1 中的所有字符串都以类似的形式存在(见下文),我想接收 true。

现在的问题是,

List1:
1. iscat
2. ishooman
3. isdoge

List2:
1. is_Cat
2. is_Hooman
3. is_doge

从逻辑上讲,函数 list2.containsAll(list1) 返回 false,因为字符串不相等。

我将如何检查相似的字符串?我可以想到 Regex,但现在脑子里没有一个明确的术语,而且我还不知道如何在 Java 中使用 Regex。

谢谢

最佳答案

commons-collections4 有一个以 Equator 为输入的 CollectionUtils.isEqualCollection() 方法(类似于 equals() 方法)。

您可以生成一个赤道使这些字符串相同,然后调用 isEqualCollection()

    Equator<String> equator = new Equator<String>() {
@Override
public boolean equate(String o1, String o2) {
if (StringUtils.equalsIgnoreCase(o1.replaceAll("_", ""), o2.replaceAll("_", ""))) {
return true;
} else {
return false;
}
}

@Override
public int hash(String o) {
return HashCodeBuilder.reflectionHashCode(o.replaceAll("_", "")).toLowerCase();
}
};
List<String> a = new ArrayList<>();
List<String> b = new ArrayList<>();
a.add("iscat");
b.add("is_Cat");
System.out.println(CollectionUtils.isEqualCollection(a, b, equator));

还有一个类似的 CollectionUtils.removeAll() 函数。我只是看到您只需要 containAll(),所以您可以改用 removeAll。如果在 A removeAll B 之后什么都没有留下,我们可以看到 B containsAll A。

关于java - 检查 list2.containsAll(list1) 是否不完全相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068916/

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