gpt4 book ai didi

java - 如何检测一个 Set of Sets 是否包含另一个 Set?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:38 31 4
gpt4 key购买 nike

很奇怪:A 是一个集合,B 是一个集合的集合:

Set <String> A=new HashSet<String>();
Set <Set<String>> B=new HashSet<Set<String>>();

我给他们加了东西,输出

System.out.println(A)

是:

[evacuated, leave, prepc_behind]

的输出
System.out.println(B)

是:

[[leave,  to, aux], [auxpass,  were, forced], [leave,  evacuated, prepc_behind]]

可以看出,集合B的第三个元素等于集合A。所以假设

if(B.contains(A)){...}

应该返回 true,但显然它没有。有什么问题?

更多详情:

 Pattern pattern = Pattern.compile("(.*?)\\((.*?)\\-\\d+,(.*?)\\-\\d+\\).*");
for (int i = 0; i < list.size(); i++) {
Set <String> tp = new HashSet<String>();
Matcher m = pattern.matcher(list.get(i).toString());
if (m.find()) {
tp.add(m.group(1).toLowerCase());
tp.add(m.group(2).toLowerCase());
tp.add(m.group(3).toLowerCase());
}
B.add(tp);
}
Set <String> A=new HashSet<String>();
A.add("leave");
A.add("evacuated");
A.add("prepc_behind");
System.out.println(A);
if(B.contains(A)){
System.out.println("B contains A");
}

最佳答案

基本思想 (setA.contains(setB) == true) 似乎工作正常:

    Set<String>      set1 = new HashSet<String>();
Set<Set<String>> set2 = new HashSet<Set<String>>();
Set<String> tmpSet;

set1.add("one");
set1.add("three");
set1.add("two");

tmpSet = new HashSet<String>();
tmpSet.add("1");
tmpSet.add("2");
tmpSet.add("3");
set2.add(tmpSet);

tmpSet = new HashSet<String>();
tmpSet.add("one");
tmpSet.add("two");
tmpSet.add("three");
set2.add(tmpSet);

System.out.println(set2.contains(set1)); // true

我敢猜测您在正则表达式中捕获的内容比您想要的要多。尝试将来自正则表达式的匹配项和测试字符串转换为 byte[] 并相互检查它们。

关于java - 如何检测一个 Set of Sets 是否包含另一个 Set?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468815/

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