java arraylist conversions other collections
Този урок обсъжда преобразувания на ArrayList към други колекции като Set, LinkedList, Lists и др., Заедно с разликите между тези колекции:
Досега сме виждали почти всички концепции, свързани с ArrayList в Java. Освен създаването и манипулирането на ArrayList с помощта на различни операции или методи, предоставени от класа ArrayList, понякога се изисква и конвертиране на ArrayList в една или повече колекции.
=> Посетете тук, за да научите Java от нулата.
В този урок ще обсъдим някои от преобразуванията от ArrayList към други колекции, които включват List, LinkedList, Vector, Set и др. Ще разгледаме и преобразуването между ArrayList и String. След преобразуване ще обсъдим и разликите между ArrayLists и други колекции - Arrays, List, Vector, LinkedList и др.
c ++ ide с компилатор
Какво ще научите:
- ArrayList към преобразуване на низове
- Преобразуване на String To ArrayList
- Преобразуване на списък в ArrayList в Java
- Конвертиране на ArrayList в Java
- Конвертиране на Set To ArrayList в Java
- Масив от ArrayList в Java
- ArrayList на масиви в Java
- Списък срещу ArrayList в Java
- Vector Vs ArrayList
- ArrayList срещу LinkedList
- често задавани въпроси
- Заключение
- Препоръчително четене
ArrayList към преобразуване на низове
Следните методи могат да се използват за конвертиране на ArrayList в String.
# 1) Използване на обект StringBuilder
import java.util.ArrayList; public class Main { public static void main(String args()) { //Create and initialize the ArrayList ArrayList strList = new ArrayList(); strList.add('Software'); strList.add('Testing'); strList.add('Help'); //print the ArrayList System.out.println('The ArrayList: ' + strList); //define a stringbuilder object StringBuffer sb = new StringBuffer(); //append each ArrayList element to the stringbuilder object for (String str : strList) { sb.append(str + ' '); } //convert stringbuilder to string and print it. String myStr = sb.toString(); System.out.println('
String from ArrayList: ' + myStr); } }
Изход:
Списъкът с масиви: (Софтуер, Тестване, Помощ)
Низ от ArrayList: Помощ за тестване на софтуер
В горната програма се създава обект StringBuilder. След това, използвайки цикъла forEach, всеки елемент в ArrayList се добавя към обекта StringBuilder. Тогава обектът StringBuilder се преобразува в низ. Имайте предвид, че с помощта на метода StringBuilder ‘добавяне’; можете също да добавите подходящ разделител към низа.
В горния пример използвахме интервал („“) като разделител.
# 2) Използване на метода String.join ()
Методът String.join () може да се използва за конвертиране на ArrayList в String. Тук можете също да предадете подходящ разделител на метода на присъединяване.
Програмата по-долу демонстрира това.
import java.util.ArrayList; public class Main { public static void main(String() args) { // create and initialize the ArrayList ArrayList metroList = new ArrayList(); metroList.add('Delhi'); metroList.add('Mumbai'); metroList.add('Chennai'); metroList.add('Kolkata'); //print the ArrayList System.out.println('The ArrayList: ' + metroList); // Join with an empty delimiter to concat all strings. String resultStr = String.join(' ', metroList); System.out.println('
String converted from ArrayList: '+resultStr); } }
Изход:
Списъкът с масиви: (Делхи, Мумбай, Ченай, Калкута)
Низ, преобразуван от ArrayList: Делхи Мумбай Ченай Колката
Можете да видите, че ние директно предаваме ArrayList като аргумент на метода String.join () заедно с разделителя.
За прости String ArrayLists, String.join () е най-добрият метод за конвертиране в String. Но за по-сложни ArrayLists обекти, използването на StringBuilder е по-ефективно.
Преобразуване на String To ArrayList
За да конвертирате String в ArrayList, има две стъпки:
- Низът се разделя с помощта на функцията split () и поднизовете (разделени на подходящ разделител) се съхраняват в масив от низове.
- След това масивът от низове, получен от разделянето на низа, се преобразува в ArrayList, използвайки метода ‘asList ()’ от класа Arrays.
Програмата за конвертиране на низ в ArrayList е дадена по-долу.
import java.util.ArrayList; import java.util.List; import java.util.Arrays; public class Main { public static void main(String args()){ //define a string String myStr = 'The string to ArrayList program'; //convert string to array using split function on spaces String strArray() = myStr.split(' '); //print the string System.out.println('The input string : ' + myStr); //declare an ArrayList List strList = new ArrayList(); //convert string array to ArrayList using asList method strList = Arrays.asList(strArray); //print the resultant ArrayList System.out.println('
The ArrayList from String:' + strList ); } }
Изход:
Входният низ: Низът към програмата ArrayList
ArrayList от String: (The, string, to, ArrayList, програма)
В горната програма разделяме низа на интервали и го събираме в масив от низове. След това този масив се преобразува в ArrayList от низове.
Преобразуване на списък в ArrayList в Java
ArrayList реализира интерфейса List. Ако искате да конвертирате Списък в неговото изпълнение като ArrayList, можете да го направите, като използвате метода addAll на интерфейса на Списък.
Програмата по-долу показва преобразуването на списъка в ArrayList чрез добавяне на всички елементи от списъка към ArrayList.
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String a()){ //create a list & initiliaze it List collections_List = new ArrayList(); collections_List.add('ArrayList'); collections_List.add('Vector'); collections_List.add('LinkedList'); collections_List.add('Stack'); collections_List.add('Set'); collections_List.add('Map'); //print the list System.out.println('List contents: '+collections_List); //create an ArrayList ArrayList myList = new ArrayList(); //use addAll() method to add list elements to ArrayList myList.addAll(collections_List); //print the ArrayList System.out.println('
ArrayList after adding elements: '+myList); } }
Изход:
Съдържание на списъка: (ArrayList, Vector, LinkedList, Stack, Set, Map)
ArrayList след добавяне на елементи: (ArrayList, Vector, LinkedList, Stack, Set, Map)
Конвертиране на ArrayList в Java
Следните методи преобразуват ArrayList в набор.
# 1) Използване на традиционен итеративен подход
Това е традиционният подход. Тук прелистваме списъка и добавяме всеки елемент от ArrayList към набора.
В програмата по-долу имаме ArrayList на низ. Декларираме HashSet на низ. След това, използвайки цикъла forEach, итерираме над ArrayList и добавяме всеки елемент към HashSet.
По подобен начин можем също да преобразуваме ArrayList в treeSet.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a HashSet Set hSet = new HashSet(); //Add each ArrayList element to the set for (String x : colorsList) hSet.add(x); //Print the HashSet System.out.println('
HashSet obtained from ArrayList: ' + hSet); } }
Изход:
Списъкът с масиви: (Червен, Зелен, Син, Циан, Пурпурен, Жълт)
HashSet, получен от ArrayList: (Червено, Синьо, Синьо, Жълто, Пурпурно, Зелено)
# 2) Използване на конструктор на Set
Следващият метод за конвертиране на ArrayList в набор използва конструктора. В този метод ние предаваме ArrayList като аргумент на конструктора на множество и по този начин инициализираме обекта set с ArrayList елементи.
Програмата по-долу показва използването на ArrayList при създаването на зададен обект.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a TreeSet Set tSet = new TreeSet(colorsList); //Print the TreeSet System.out.println('
TreeSet obtained from ArrayList: ' + tSet); } }
Изход:
Списъкът с масиви: (Червено, Зелено, Синьо, Синьо, Пурпурно, Жълто
TreeSet, получен от ArrayList: (Синьо, Синьо, Зелено, Пурпурно, Червено, Жълто)
# 3) Използване на метода addAll
Можете също да използвате метода addAll на Set, за да добавите всички елементи от ArrayList към набора.
Следващата програма използва метода addAll, за да добави елементите на ArrayList към HashSet.
import java.util.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); //Declare a HashSet Set hSet = new HashSet(); //use addAll method of HashSet to add elements of ArrayList hSet.addAll(colorsList); //Print the HashSet System.out.println('
HashSet obtained from ArrayList: ' + hSet); } }
Изход:
Списъкът с масиви: (Червен, Зелен, Син, Циан, Пурпурен, Жълт)
HashSet, получен от ArrayList: (Червено, Синьо, Синьо, Жълто, Пурпурно, Зелено)
# 4) Използване на Java 8 Stream
Потоците са новите допълнения към Java 8. Този клас поток предоставя метод за преобразуване на ArrayList в поток и след това за задаване.
Програмата Java по-долу демонстрира използването на метода клас потоци за конвертиране на ArrayList в набор.
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create & initialize an ArrayList ArrayList colorsList = new ArrayList (Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow')); //print the ArrayList System.out.println('The ArrayList:' + colorsList); // Convert ArrayList to set using stream Set set = colorsList.stream().collect(Collectors.toSet()); //Print the Set System.out.println('
Set obtained from ArrayList: ' + set); } }
Изход:
Списъкът с масиви: (Червен, Зелен, Син, Циан, Пурпурен, Жълт)
Комплект, получен от ArrayList: (Червен, Циан, Син, Жълт, Пурпурен, Зелен)
Конвертиране на Set To ArrayList в Java
В последния раздел видяхме преобразуването на ArrayList в Set. Преобразуването от Set в ArrayList също използва същите методи, както е описано по-горе, с разликата, че позицията на набора и ArrayList се променя.
По-долу са дадени примери за програмиране за конвертиране на Set в ArrayList. Другото описание за всеки метод остава същото.
# 1) Итеративен подход
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList ArrayList numList = new ArrayList(set.size()); //add each set element to the ArrayList using add method for (String str : set) numList.add(str); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
Изход:
Даденият комплект: (Един, Два, Три)
ArrayList, получен от Set: (One, Two, Three)
В горната програма итерираме през Set и всеки елемент от set се добавя към ArrayList.
# 2) Използване на конструктор
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList and pass set to the constructor List numList = new ArrayList(set); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
Изход:
Даденият комплект: (Един, Два, Три)
ArrayList, получен от Set: (One, Two, Three)
Горната програма създава набор и ArrayList. Обектът ArrayList се създава чрез предоставяне на зададен обект като аргумент в неговия конструктор.
# 3) Използване на метода addAll
import java.util.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList List numList = new ArrayList(); //use addAll method of ArrayList to add elements of set numList.addAll(set); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
Изход:
Даденият комплект: (Един, Два, Три)
ArrayList, получен от Set: (One, Two, Three)
Тук използваме метода addAll на ArrayList, за да добавим елементите от набора към ArrayList.
# 4) Използване на Java 8 Stream
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create a set of strings & add elements to it Set set = new HashSet(); set.add('One'); set.add('Two'); set.add('Three'); //print the set System.out.println('The given Set: ' + set); //create an ArrayList and using stream method,assign stream of elements to ArrayList List numList = set.stream().collect(Collectors.toList()); //print the ArrayList System.out.println('
ArrayList obtained from Set: ' + numList); } }
Изход:
Даденият комплект: (Един, Два, Три)
ArrayList, получен от Set: (One, Two, Three)
Горната програма използва клас поток за конвертиране на Set в ArrayList.
Масив от ArrayList в Java
Масивът от ArrayList, както подсказва името, се състои от ArrayLists като негови елементи. Въпреки че функцията не се използва редовно, тя се използва, когато е необходимо ефективно използване на паметта.
Следващата програма реализира масив от ArrayLists в Java.
import java.util.ArrayList; import java.util.List; public class Main { public static void main(String() args) { //define and initialize a num_list List num_list = new ArrayList(); num_list.add('One'); num_list.add('Two'); num_list.add('Two'); //define and initialize a colors_list List colors_list = new ArrayList(); colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); //define Array of ArrayList with two elements List() arrayOfArrayList = new List(2); //add num_list as first element arrayOfArrayList(0) = num_list; //add colors_list as second element arrayOfArrayList(1) = colors_list; //print the contents of Array of ArrayList System.out.println('Contents of Array of ArrayList:'); for (int i = 0; i Изход:
Съдържание на Array of ArrayList:
(Едно, две, две)
(Червено, зелено, синьо)

В горната програма първо дефинираме два списъка. След това декларираме масив от две ArrayList. Всеки елемент от този масив е ArrayList, дефиниран по-рано. И накрая, съдържанието на масив от ArrayList се показва с помощта на цикъл for.
ArrayList на масиви в Java
Точно както имаме масив от ArrayLists, можем да имаме и ArrayList от масиви. Тук всеки отделен елемент от ArrayList е Array.
Програмата по-долу демонстрира ArrayList на масиви.
import java.util.*; public class Main { public static void main(String() args) { // declare ArrayList of String arrays ArrayList ArrayList_Of_Arrays = new ArrayList(); //define individual string arrays String() colors = { 'Red', 'Green', 'Blue' }; String() cities = { 'Pune', 'Mumbai', 'Delhi'}; //add each array as element to ArrayList ArrayList_Of_Arrays.add(colors); ArrayList_Of_Arrays.add(cities); // print ArrayList of Arrays System.out.println('Contents of ArrayList of Arrays:'); for (String() strArr : ArrayList_Of_Arrays) { System.out.println(Arrays.toString(strArr)); } } }
Изход:
Съдържание на ArrayList of Arrays:
(Червено, зелено, синьо)
(Пуна, Мумбай, Делхи)

Горната програма демонстрира ArrayList на масиви. Първоначално декларираме ArrayList на String Arrays. Това означава, че всеки елемент от ArrayList ще бъде String Array. След това дефинираме два низ масива. След това всеки от масивите се добавя към ArrayList. Накрая отпечатваме съдържанието на ArrayList of Arrays.
За да отпечатаме съдържанието, обхождаме ArrayList, използвайки for цикъл. За всяка итерация отпечатваме съдържанието на елемента ArrayList, който има Array, използвайки метода Arrays.toString ().
Списък срещу ArrayList в Java
Следващите таблици показват някои от разликите между List и ArrayList.
Списък ArrayList Списъкът е интерфейс в Java ArrayList е част от рамката на Java Collection Списъкът е изпълнен като интерфейс ArrayList е реализиран като колекционен клас Разширява интерфейса за събиране реализира списъчен интерфейс и разширява AbstractList Част от System.Collection.generic пространство от имена Част от пространството от имена System.Collections С помощта на Списък може да се създаде списък с елементи, до които може да се осъществи достъп чрез индекси. Използвайки ArrayList, можем да създадем динамичен масив от елементи или обекти, чийто размер автоматично се променя с промените в съдържанието.
Vector Vs ArrayList
По-долу са дадени някои от разликите между Vector и ArrayList.
ArrayList LinkedList ArrayList реализира списъчен интерфейс LinkedList изпълнява List и Deque интерфейси. Съхранението и достъпът на данни са ефективни в ArrayList. LinkedList е добър в манипулирането на данни. ArrayList вътрешно реализира динамичен масив. LinkedList вътрешно прилага двойно свързан списък. Тъй като ArrayList вътрешно изпълнява динамичен масив, добавянето / изтриването на елементи е бавно, тъй като се изисква много битово изместване. LinkedList е по-бърз по отношение на добавянето / премахването на елементи, тъй като не е необходимо преместване на битове. По-малко излишни памет, тъй като в ArrayList се съхраняват само действителни данни. Повече излишни памет, тъй като всеки възел в LinkedList съдържа данни, както и адреса на следващия възел.
ArrayList срещу LinkedList
Нека сега обсъдим различните разлики между ArrayList и LinkedList.
ArrayList LinkedList ArrayList реализира списъчен интерфейс LinkedList изпълнява List и Deque интерфейси. Съхранението и достъпът на данни са ефективни в ArrayList. LinkedList е добър в манипулирането на данни. ArrayList вътрешно реализира динамичен масив. LinkedList вътрешно прилага двойно свързан списък. Тъй като ArrayList вътрешно изпълнява динамичен масив, добавянето / изтриването на елементи е бавно, тъй като се изисква много битово изместване. LinkedList е по-бърз по отношение на добавянето / премахването на елементи, тъй като не е необходимо преместване на битове. По-малко излишни памет, тъй като в ArrayList се съхраняват само действителни данни. Повече излишни памет, тъй като всеки възел в LinkedList съдържа данни, както и адреса на следващия възел.
често задавани въпроси
В # 1) Как да конвертирате ArrayList в Array в Java?
Отговор: За да конвертирате ArrayList в Array в Java, можете да използвате метода toArray () от API на ArrayList, който преобразува даден ArrayList в Array.
Q # 2) Как разделяте низ и го съхранявате в ArrayList в Java?
Отговор: Низът се разделя с помощта на функция split (). Този метод връща масив от низове. След това, използвайки метода Arrays.asList (), масивът от низове може да бъде преобразуван в ArrayList от низове.
В # 3) Какъв е размерът на ArrayList по подразбиране?
Отговор: Обектът ArrayList, създаден без посочване на капацитета, има размер 0, тъй като в списъка няма добавени елементи. Но капацитетът по подразбиране на този ArrayList е 10.
В # 4) Каква е разликата между дължината () и размера () на ArrayList?
Отговор: ArrayList няма свойство или метод length (). Той предоставя само метода size (), който връща общия брой елементи в ArrayList.
В # 5) Каква е разликата между капацитета и размера на ArrayList?
Отговор: ArrayList притежава както капацитет, така и размер. Капацитетът е общият размер на ArrayList или общият брой елементи, които може да съдържа. Размер е броят на елементите или местоположенията, в които има данни.
Например, ако капацитетът на ArrayList е 10 и размерът му е 5, това означава, че ArrayList може да съдържа до 10 елемента, но в момента само 5 места имат данни в тях.
Заключение
В този урок обсъдихме някои от допълнителните концепции, свързани с ArrayList като преобразуване на ArrayList в низ, списък, набор и обратно. Също така обсъдихме разликите между ArrayList и Vector, ArrayList и LinkedList и др.
В нашия предстоящ урок ще вземем друга колекция и ще я научим старателно.
=> Проверете тук, за да видите A-Z на Java уроци за обучение тук.
Препоръчително четене
- Java String с урок за String Buffer и String Builder
- Java ArrayList - Как да декларирам, инициализирам и отпечатам ArrayList
- Урок за отражение на Java с примери
- Java урок за низове | Низови методи на Java с примери
- Java нишки с методи и жизнен цикъл
- Разполагане на Java: Създаване и изпълнение на Java JAR файл
- Основи на Java: Синтаксис на Java, клас Java и основни концепции на Java
- Java виртуална машина: Как JVM помага при стартирането на Java приложение