Как преобразовать массив в набор в Java - PullRequest
643 голосов
/ 17 июня 2010

Я хотел бы преобразовать массив в набор в Java.Есть несколько очевидных способов сделать это (то есть с помощью цикла), но я хотел бы что-то более аккуратное, что-то вроде:

java.util.Arrays.asList(Object[] a);

Есть идеи?

Ответы [ 17 ]

3 голосов
/ 17 декабря 2018

Уже было много хороших ответов, но большинство из них не будут работать с массивом примитивов, таких как (int[], byte[], long[], char[] и т. Д.)

В Java 8 и выше, поместите в массив что-то вроде:

Integer[] boxedArr = Arrays.stream(arr).boxed().toArray(Integer[]::new);

Затем простой поток может преобразовать его в набор:

Stream.of(boxedArr).collect(Collectors.toSet());
0 голосов
/ 22 мая 2018

Используйте CollectionUtils или ArrayUtils из stanford-postagger-3.0.jar

import static edu.stanford.nlp.util.ArrayUtils.asSet;
or 
import static edu.stanford.nlp.util.CollectionUtils.asSet;

  ...
String [] array = {"1", "q"};
Set<String> trackIds = asSet(array);
0 голосов
/ 14 апреля 2018

В Java 10 :

String[] strs = {"A", "B"};
Set<String> set = Set.copyOf(Arrays.asList(strs));

Set.copyOf возвращает неизменяемое Set, содержащее элементы данного Collection.

Указанный Collection не должен быть null и не должен содержать никаких элементов null.

0 голосов
/ 28 августа 2016
    private Map<Integer, Set<Integer>> nobreaks = new HashMap();
    nobreaks.put(1, new HashSet(Arrays.asList(new int[]{2, 4, 5})));
    System.out.println("expected size is 3: " +nobreaks.get(1).size());

вывод

    expected size is 3: 1

изменить его на

    nobreaks.put(1, new HashSet(Arrays.asList( 2, 4, 5 )));

вывод

    expected size is 3: 3
0 голосов
/ 12 января 2016
Set<T> b = new HashSet<>(Arrays.asList(requiredArray));
0 голосов
/ 17 июня 2010

new HashSet<Object>(Arrays.asList(Object[] a));

Но я думаю, что это будет более эффективным:

final Set s = new HashSet<Object>();    
for (Object o : a) { s.add(o); }         
0 голосов
/ 04 января 2012

Иногда помогает использование некоторых стандартных библиотек.Попробуйте взглянуть на Коллекции Apache Commons .В этом случае ваши проблемы просто преобразуются в нечто подобное

String[] keys = {"blah", "blahblah"}
Set<String> myEmptySet = new HashSet<String>();
CollectionUtils.addAll(pythonKeywordSet, keys);

А вот CollectionsUtils javadoc

...