Есть ли более короткий способ сконструировать Set<String> ?

 
 
 
Сообщения:19
Привет, есть такой вариант
Set<String> setStation = new HashSet<String>(Arrays.asList(new String[] {"mt","wa","or","id","nv","ut"}));


Пересмотрел весь API java.util и не могу начти ничего более изящного, а хотелось бы что-то типа этого, как напрмиер в Python:
setStation = set(["mt","wa","or","id","nv","ut"])

Спасибо
Изменен:04 апр 2019 19:19
 
 
Сообщения:9807
Ходят слухи в Java9 можно так:
Set<String> setStation = Set.of("mt","wa","or","id","nv","ut")
Изменен:04 апр 2019 19:26
 
 
Сообщения:19
забыл уточнить - стоит Java 8 )))
 
 
Сообщения:9807
Тогда нет, это самый короткий (но не самый эффективный) способ создания:
Set<String> setStation = new HashSet<>(Arrays.asList("mt","wa","or","id","nv","ut"});
 
 
Сообщения:19
Сапсибо, единственно воскликну насчет опускания типа в HashSet<> - а что так можно было? Так понимаю по сути это
Set<String> set = new HashSet<>();

абcолютно тоже самое что и
Set<String> set = new HashSet<String>();
?
Изменен:04 апр 2019 19:40
 
 
Сообщения:9807
Да, это то же самое, просто укороченный вариант который появился в 7ке: Diamond Operator
 
 
Сообщения:19
еще раз спасибо)
 
 
Сообщения:871
Подключайте в проект библиотеку

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.3</version>
</dependency>

Там есть утилитный класс SetUtils:
https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/SetUtils.html

В коде создание Set будет выглядеть так:

Set<String> setStation = SetUtils.hashSet("mt","wa","or","id","nv","ut");
 
 
Сообщения:94
Староверъ:
Тогда нет, это самый короткий (но не самый эффективный) способ создания:
Set<String> setStation = new HashSet<>(Arrays.asList("mt","wa","or","id","nv","ut"});


А можно поинтересоваться почему не самый эффективный?
 
 
Сообщения:9807
Gentleman:
А можно поинтересоваться почему не самый эффективный?
Ну сначала создается массив, затем этот массив копируется внутри ArrayList'a, а потом снова копируется, но уже в HashSet. Создать HashSet, а потом несколько раз сделать add() намного производительней. Но если это делается редко в приложении, то это конечно ни на что не влияет.
 
 
Сообщения:94
Староверъ:
Ну сначала создается массив, затем этот массив копируется внутри ArrayList'a, а потом снова копируется, но уже в HashSet. Создать HashSet, а потом несколько раз сделать add() намного производительней. Но если это делается редко в приложении, то это конечно ни на что не влияет.


Всё понятно, спасибо.
Изменен:05 апр 2019 10:05
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет