很是怪異: 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");
}
你是如何添加元素的?因爲'B.contains(A)'對我來說是正確的。 –
對我來說也按預期工作(即返回true)。 –
我有一個for循環,它使用:B.add(tp); tp是一個集合。 – Marcus