if (typeof console != "undefined") {
...
}
Или лучше
if ((typeof console == "object") && (typeof console.profile == "function")) {
console.profile(f.constructor);
}
Работает во всех браузерах
Принятие 2 объектов Набора a и b
И (пересечение двух множеств)
a.retainAll(b);
ИЛИ (объединение двух множеств)
a.addAll(b);
XOR любой цикл самокрутки:
foreach item
if(a.contains(item) and !b.contains(item) || (!a.contains(item) and b.contains(item)))
c.add(item)
или делают это:
c.addAll(a);
c.addAll(b);
a.retainAll(b); //a now has the intersection of a and b
c.removeAll(a);
Посмотрите документация Набора и этот страница . Для больше.
@Milhous сказан:
проверяют API наборов. при использовании addAll, можно добраться или. При использовании retainAll, можно добраться и. Я не знаю о Xor.
походит, если у Вас были наборы s1
, и s2
Вы могли бы сделать это для получения XOR:
s1
в s3
s1.removeAll(s2);
(s1, теперь содержит все элементы не в s2) s2.removeAll(s3);
(s2, теперь содержит все элементы не в s3 =, старый s1) s1.addAll(s2);
(s1 теперь содержит объединение вышеупомянутых двух наборов) проверьте наборы api. при использовании addAll, можно добраться или. При использовании retainAll, можно добраться и. Я не знаю о Xor.
Редактирование: из документации набора.
... Если указанный набор является также набором, addAll операция эффективно изменяет этот набор так, чтобы его значение было объединением двух множеств.
.... Если указанный набор является также набором, эта операция эффективно изменяет этот набор так, чтобы его значение было пересечением двух множеств.
Я вполне уверен, что Джакарта Общие Наборы, API поддерживает объединения, пересечения и т.д.
, я был бы поражен, не сделал ли Google Collections API также.
Вы можете использовать Google-Collections Sets класс, который имеет методы intersection() union() и symmetricDifference().
Sets.intersection(set1, set2);
Sets.union(set1, set2);
SetView view = Sets.intersection(Sets.union(set1, set2), set3);
Set result = view.copyInto(new HashSet());