1. Общ преглед
В тази кратка статия ще разгледаме преобразуването между масив и набор - първо използвайки обикновена java, след това Guava и библиотеката на Commons Collections от Apache.
Тази статия е част от поредицата „Java - Back to Basic“ тук на Baeldung.
2. Преобразуване на масив в набор
2.1. Използване на обикновена Java
Нека първо разгледаме как да превърнем масива в Set, използвайки обикновена Java :
@Test public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(Arrays.asList(sourceArray)); }
Алтернативно, Set може да бъде създаден първо и след това да се запълни с елементите на масива:
@Test public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(); Collections.addAll(targetSet, sourceArray); }
2.2. Използване на Google Guava
След това нека разгледаме преобразуването на Guava от масив в Set :
@Test public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = Sets.newHashSet(sourceArray); }
2.3. Използване на колекции Apache Commons
И накрая, нека направим преобразуването, използвайки библиотеката на Commons Collection от Apache:
@Test public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() { Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; Set targetSet = new HashSet(6); CollectionUtils.addAll(targetSet, sourceArray); }
3. Конвертиране на Set to Array
3.1. Използване на обикновена Java
Сега нека разгледаме обратното - преобразуване на съществуващ набор в масив :
@Test public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); Integer[] targetArray = sourceSet.toArray(new Integer[0]); }
Имайте предвид, че toArray (нов T [0]) е предпочитаният начин за използване на метода над toArray (нов T [размер]) . Както доказва Алексей Шипилев в публикацията си в блога, изглежда по-бързо, по-безопасно и по-чисто.
3.2. Използване на Гуава
Следва - решението на Гуава:
@Test public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() { Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5); int[] targetArray = Ints.toArray(sourceSet); }
Забележете, че използваме API на Ints от Guava, така че това решение е специфично за типа данни, с който работим.
4. Заключение
Внедряването на всички тези примери и кодови фрагменти може да бъде намерено в Github - това е проект, базиран на Maven, така че трябва да е лесно да се импортира и да се изпълнява както е.