Преобразование между списком и набором в Java
1. обзор
В этой короткой статье мы рассмотримthe conversion between a List and a Set - начиная с Plain Java, используя Guava и, наконец, используя библиотекуApache Commons Collections.
Эта статья является частьюthe “Java – Back to Basic” series здесь для примера.
Дальнейшее чтение:
Как найти элемент в списке с помощью Java
Взгляните на несколько быстрых способов найти элемент в списке в Java
Проверьте, равны ли два списка в Java
Короткая статья была посвящена общей проблеме тестирования, если два экземпляра List содержат одинаковые элементы в абсолютно одинаковом порядке.
2. ПреобразоватьList вSet
2.1. С простой Java
Начнем с преобразованияfrom a List to a Set using Java:
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
Set targetSet = new HashSet<>(sourceList);
}
Как видите, процесс преобразования является типобезопасным и очень простым - поскольку конструкторы каждой коллекции принимают другую коллекцию в качестве источника.
2.2. Wситх Гуава
Давайте сделаем то же преобразование с помощью Guava:
public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set targetSet = Sets.newHashSet(sourceList);
}
2.3. С коллекциями Apache Commons
Затем давайте воспользуемся Commons Collections API для преобразования междуList иSet:
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set targetSet = new HashSet<>(6);
CollectionUtils.addAll(targetSet, sourceList);
}
3. ПреобразоватьSet вList
3.1. С простой Java
Теперь сделаем обратное преобразование -from a Set to a List – using Java:
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List targetList = new ArrayList<>(sourceSet);
}
3.2. С гуавой
И решение Guava:
public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List targetList = Lists.newArrayList(sourceSet);
}
Очень похоже на подход Java, только с немного менее дублированным кодом.
3.3. С коллекциями Apache Commons
Наконец, решение Commons Collections для преобразования междуSet иList:
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List targetList = new ArrayList<>(6);
CollectionUtils.addAll(targetList, sourceSet);
}
4. Заключение
Реализация всех этих примеров и фрагментов кодаcan be found over on GitHub - это проект на основе Maven, поэтому его должно быть легко импортировать и запускать как есть.