Java: существует ли легкий, быстрый путь к И, ИЛИ, или XOR вместе устанавливает?

if (typeof console != "undefined") {    
   ...
}

Или лучше

if ((typeof console == "object") && (typeof console.profile == "function")) {    
   console.profile(f.constructor);    
}

Работает во всех браузерах

20
задан Daddy Warbox 26 December 2008 в 17:04
поделиться

5 ответов

Принятие 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); 

Посмотрите документация Набора и этот страница . Для больше.

34
ответ дан 29 November 2019 в 23:27
поделиться

@Milhous сказан:

проверяют API наборов. при использовании addAll, можно добраться или. При использовании retainAll, можно добраться и. Я не знаю о Xor.

походит, если у Вас были наборы s1, и s2 Вы могли бы сделать это для получения XOR:

  1. копируют набор s1 в s3
  2. s1.removeAll(s2); (s1, теперь содержит все элементы не в s2)
  3. s2.removeAll(s3); (s2, теперь содержит все элементы не в s3 =, старый s1)
  4. s1.addAll(s2); (s1 теперь содержит объединение вышеупомянутых двух наборов)
3
ответ дан 29 November 2019 в 23:27
поделиться

проверьте наборы api. при использовании addAll, можно добраться или. При использовании retainAll, можно добраться и. Я не знаю о Xor.

Редактирование: из документации набора.

... Если указанный набор является также набором, addAll операция эффективно изменяет этот набор так, чтобы его значение было объединением двух множеств.

.... Если указанный набор является также набором, эта операция эффективно изменяет этот набор так, чтобы его значение было пересечением двух множеств.

1
ответ дан 29 November 2019 в 23:27
поделиться

Я вполне уверен, что Джакарта Общие Наборы, API поддерживает объединения, пересечения и т.д.

, я был бы поражен, не сделал ли Google Collections API также.

0
ответ дан 29 November 2019 в 23:27
поделиться

Вы можете использовать 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());
9
ответ дан 29 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: