To jest dziwne: A jest zestaw i B jest zbiorem zestawach:Jak wykryć, czy zestaw zestawów zawiera inny zestaw?
Set <String> A=new HashSet<String>();
Set <Set<String>> B=new HashSet<Set<String>>();
dodałem rzeczy do nich i wyjście
System.out.println(A)
jest:
[evacuated, leave, prepc_behind]
i wyjście z
System.out.println(B)
jest:
[[leave, to, aux], [auxpass, were, forced], [leave, evacuated, prepc_behind]]
jak można zauważyć, trzecim elementem zbioru B jest równa zbioru A. Tak hipotetycznie
if(B.contains(A)){...}
powinien powrócić prawda, ale najwyraźniej nie. Jaki jest problem?
Szczegóły:
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");
}
Jak dodajesz elementy? Ponieważ "B.contains (A)" zwraca mi wartość true. –
Działa również zgodnie z przeznaczeniem (to znaczy zwraca wartość true). –
Mam pętlę for, która utrzymuje dodawanie zestawów do B za pomocą: B.add (tp); tp jest zbiorem. – Marcus