covert list array
Този урок обяснява как да конвертирате списъка на Java в масив и други колекции. Включва примери за конвертиране на списък в масив, низ, набор и обратно:
В нашите по-ранни уроци обсъдихме подробностите за колекцията от списъци. Виждали сме различните операции в списъка, итератори и др. Като имаме списък, можем да конвертираме този списък във всякакви други колекции или структури от данни като низове, масиви, ArrayList, набор и т.н.
=> Посетете тук за ексклузивната серия уроци за обучение по Java.
Какво ще научите:
Списък с конверсии
Тук това, което всъщност правим, е да прехвърлим елементите от една колекция / структура в друга и по този начин ние всъщност променяме оформлението на елементите, тъй като всяка колекция или структура от данни има свое собствено оформление.
В този урок ще обсъдим няколко преобразувания от списъка в други структури от данни и обратно.
Преобразуване на списък в низ
Можете лесно да конвертирате списъка с елементи в неговото низово представяне. Най-вече ще искате да конвертирате списък от низове или символи в представяне на низ.
Има различни методи за преобразуване на списъка в низ. Най-популярните са разгледани по-долу.
# 1) Използване на метода toString
Това е най-простият метод за конвертиране на списък в низ. В този метод просто използвате метода ‘toString’ в списък, който преобразува списъка в представяне на низ.
Програмата по-долу показва изпълнението на метода toString.
import java.util.Arrays; import java.util.List; // Convert List of Characters to String in Java class Main { public static void main(String() args) { // create and initialize a character list List strList = Arrays.asList('H', 'e', 'l', 'l', 'o'); //convert list to string using toString method System.out.println('List converted to string representation:
' + strList.toString()); //replace comma between characters with blanks String string = strList.toString() .substring(1, 3 * strList.size() - 1) .replaceAll(', ', ''); // print string System.out.println('String representation by removing delimiters:
' + string); } }
Изход:
В тази програма можете да видите, че след преобразуване на списъка със символи в представяне на низ, низът се усъвършенства допълнително чрез премахване на ограничаващите знаци от него и представянето му като една дума.
# 2) Използване на колекционерски клас
От Java 8 нататък можете да използвате API на потока с класа ‘Collectors’, за да конвертирате списъка в низ.
Пример:
import java.util.stream.Collectors; import java.util.Arrays; import java.util.List; class Main { public static void main(String() args) { // create and initialize list List strList = Arrays.asList('W', 'o', 'r', 'l','d'); // convert list to string using collect and joining() method String string= strList.stream().map(String::valueOf).collect(Collectors.joining()); // print string System.out.println('List converted to string:' + string); } }
Изход:
В горната програма използваме API на потока, картографираме стойностите и след това използваме метода joining () на класа Collectors и конвертираме списъка в низ.
# 3) Използване на клас StringBuilder
Третият метод за преобразуване на списъка в низ е чрез използване на обект StringBuilder. Тук всеки елемент в списъка се добавя към обекта StringBuilder с помощта на цикъл. Тогава обектът StringBuilder се преобразува в своето низово представяне, използвайки метода toString.
Проверете следната програма за демонстрацията.
import java.util.Arrays; import java.util.List; class Main { public static void main(String() args) { // create and initialize the list List strList = Arrays.asList('I', 'n', 'd', 'i', 'a'); // object of stringBuilder StringBuilder sb = new StringBuilder(); // use append method to append list element to StringBuilder object for (Character ch : strList) { sb.append(ch); } // convert StringBuilder object to string using toString() String string = sb.toString(); // print string System.out.println('List converted to string: ' + string); } }
Изход:
Горната програма показва използването на обекта StringBuilder, към който са добавени елементите в списъка. След това обектът се преобразува в низ.
Преобразуване на списък в масив
Като се има предвид списък с елементи, трябва да конвертирате този списък в масив. За да направите това, можете да използвате някой от методите, описани по-долу.
# 1) Използване на toArray
Най-простият начин да конвертирате списък в масив е да използвате метода ‘toArray’ на списъка.
Следващата програма показва това изпълнение на метода toArray.
import java.util.*; public class Main { public static void main(String() args) { //create and initialize list List strList = new LinkedList(); strList.add('This'); strList.add('is'); strList.add('Java'); strList.add('Tutorial'); System.out.println('The given list:' + strList); //use toArray method to convert list to array String() strArray = strList.toArray(new String(0)); //print the array System.out.println('The Array from List: '); for (String val : strArray) System.out.print(val + ' '); } }
Изход:
В горната програма сме преобразували списък от низове в масив от низове, използвайки метода ‘toArray’.
# 2) Използване на Java 8 Stream
файл вход и изход c ++
Следващият метод за преобразуване на списък в масив е чрез използване на API на потока на Java 8. При това списъкът първо се преобразува в поток и след това с помощта на stream (). ToArray се преобразува в масив.
Следната програма Java показва това преобразуване.
import java.util.*; class Main { public static void main (String()args) { //create and initialize the list List l_list = new LinkedList (); l_list.add ('Software'); l_list.add ('Testing'); l_list.add ('Help'); l_list.add ('Tutorial'); System.out.println('The given list:' + l_list); //Convert list to array using stream and toArray methods String() str_array = l_list.stream ().toArray (String()::new); //print the array System.out.println('The Array converted from list : '); for (String val:str_array) System.out.print (val + ' '); } }
Изход:
Горната програма използва API на потока на Java 8 и преобразува списъка в масив. След това масивът се отпечатва, като се използва за всеки цикъл.
# 3) Използване на метода get
Това е друг метод за преобразуване на списъка в масив. В това използваме get () на списъка, който може да се използва за извличане на отделни елементи от списъка.
Програмата за преобразуване на списъка в масив с помощта на метода get () е показана по-долу.
import java.io.*; import java.util.List; import java.util.LinkedList; class Main { public static void main (String() args) { List colors_list = new LinkedList(); colors_list.add('Red'); colors_list.add('Green'); colors_list.add('Blue'); colors_list.add('Yellow'); System.out.println('Given list: ' + colors_list); //define the array String() colors_array = new String(colors_list.size()); // get list elements into the array for (int i =0; i Изход:

В горната програма създадохме масив със същия размер като списък. След това в цикъл елементите на списъка се извличат с помощта на метода get () и се присвояват на масива.
Преобразуване на масив в списък
Тъй като можете да конвертирате списък в масив, можете също да конвертирате масив в списък в Java. По-долу са дадени някои от методите, чрез които можете да конвертирате масив в списък.
# 1) Използване на обикновен Java код
Това е традиционният метод за преобразуване на масив в списък. Тук добавяте всеки елемент на масив към списъка един по един с помощта на цикъл. За този метод на добавяне се използва списъкът.
Следващата програма реализира традиционния метод за преобразуване на масив в списък.
import java.util.*; import java.util.stream.*; class Main { public static void main(String args()) { // Create and initialize an Array String strArray() = { 'Java', 'Python', 'C++', 'SQL', 'Perl' }; // Print the Array System.out.println('Array: ' + Arrays.toString(strArray)); // Create a List List strlist = new ArrayList(); // Iterate through the array and add each element to the list for (String val : strArray) { strlist.add(val); } // Print the List System.out.println('
List obtained from array: ' + strlist); } }
Изход:

# 2) Използване на метод asList ()
Следващият метод за преобразуване на масив в списък е чрез използване на метода asList () от класа Arrays. Тук можете да предадете Array като аргумент на метода asList () и той връща получения списък.
Следващата програма показва това.
import java.util.*; import java.util.stream.*; class Main { public static void main(String args()) { //create and intialize array Integer() oddArray = { 1,3,5,7,9,11 }; //declare a list and use asList method to assign the array to list List oddList = Arrays.asList(oddArray); // Print the List System.out.println('List from array: ' + oddList); } }
Изход:

В горната програма имаме масив от нечетни числа. След това създаваме списък с цели числа и го присвояваме на изхода на метода asList, който е списък.
# 3) Използване на метода Collection.addAll ()
Можете също да използвате метода addAll () на класа Collections, тъй като масивът и списъкът са и двете части на рамката за събиране в Java.
Следващата програма показва използването на метода Collections.addAll () за преобразуване на масив в списък.
import java.util.*; import java.util.stream.*; class Main { public static void main(String args()) { // Create and initialize an Array String strArray() = { 'Java', 'C++', 'C', 'Perl', 'Python' }; // Print the Array System.out.println('Array: ' + Arrays.toString(strArray)); // create a string list List myList = new ArrayList(); // Add array to list using Collections addAll method Collections.addAll(myList, strArray); // Print the List System.out.println('List obtained from array: ' + myList); } }
Изход:

Тук сме инициализирали масив. Създадохме празен списък. Тогава методът Collections.addAll () се използва чрез предаване на списъци и масив като аргумент. Успешното изпълнение на този метод ще има списък, попълнен с елементи на масива.
# 4) Използване на Java 8 Streams
Следващият подход за преобразуване на масив в списък е чрез използване на Java 8 Stream API и клас Collectors. Тук масивът първо се преобразува в поток и след това елементите се събират в списък с помощта на поток. Метод за събиране. Списъкът се връща накрая.
Следващата програма показва изпълнението, което преобразува масива в списък с помощта на Stream API.
import java.util.*; import java.util.stream.*; class Main { public static void main(String args()) { // Create and initialize an Array String colorsArray() = { 'Red', 'Green', 'Blue', 'Yellow', 'Magenta' }; // Print the Array System.out.println('Array: ' + Arrays.toString(colorsArray)); // convert the Array to List using stream () and Collectors class List colorslist = Arrays .stream(colorsArray) .collect(Collectors.toList()); // Print the List System.out.println('List from Array: ' + colorslist); } }
Изход:

В горната програма се създава масив от цветове. След това се създава празен списък и след това списъкът, получен от масива чрез API на потока, се присвоява на списъка.
Конвертиране на списъка за задаване
Наборът е неподредена колекция от елементи, която не позволява дублирани стойности. Set е част от рамката на Java Collections. Можете да конвертирате списък в набор и обратно, ако е необходимо.
В този раздел нека видим някои от методите, които се използват за преобразуване на списък в набор.
# 1) Използване на традиционния метод
Можете да конвертирате списъка в набор, използвайки традиционния java код. В това можете да създадете HashSet или treeSet. И след това с помощта на метод add добавете всеки елемент от списъка към набора в цикъл.
Това изпълнение е показано по-долу.
import java.util.*; class Main { public static void main(String() args) { // Creating a list of strings List strList = Arrays.asList('Java', 'Perl', 'Python', 'C++', 'C'); //print the list System.out.println('The list : ' + strList); //create a set Set hashSet = new HashSet(); //add list elements to hashset for (String ele : strList) hashSet.add(ele); //print the set System.out.println('HashSet from list:'); for (String val : hashSet) System.out.print(val + ' '); } }
Изход:

В горната програма можете да видите, че сме създали обект HashSet от тип низ. След това с помощта на подобрен цикъл за всеки елемент от списъка се добавя към набора. Накрая комплектът се отпечатва.
Препоръчително четене = >> HashSet в Java
# 2) Използване на HashSet или Treeset Constructor
Следващият метод използва конструктор на множество. Тук създаваме конструктор на множество (treeSet или HashSet). На този конструктор се предава списък като аргумент. С помощта на този списък се изгражда множеството.
Проверете програмата по-долу за това изпълнение.
import java.util.*; class Main { public static void main(String() args) { // Create a list of strings List strList = Arrays.asList('Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta'); System.out.println('Original List:' + strList); // Creating a hash set using constructor and pass list to the constructor Set hashSet = new HashSet(strList); System.out.println('
HashSet created from list:'); //print the hashSet for (String val : hashSet) System.out.print(val + ' '); //Create a treeset using constructor and pass list to the constructor Set treeSet = new TreeSet(strList); System.out.println('
TreeSet from list: '); //print the treeset for (String x : treeSet) System.out.print(x + ' '); } }
Изход:

В горната програма създаваме както HashSet, така и treeSet, като подаваме списъка като аргумент. Накрая се показва съдържанието както на HashSet, така и на дървовидния набор.
# 3) Използване на метода addAll
Това е същото като метода addAll на колекции, който видяхме преди. Тук методът addAll се използва за копиране на съдържанието на списъка в набора.
Следващата програма показва използването на метода addAll.
import java.util.*; class Main { public static void main(String() args) { // Creating a list of strings List intList = Arrays.asList(1,3,5,7,9,11,13); System.out.println('Original List: ' + intList); //create a hashset Set hashSet = new HashSet(); //add elements of list to hashSet using addAll method hashSet.addAll(intList); System.out.println('HashSet created from list: '); //print the hashSet for (Integer val : hashSet) System.out.print(val + ' '); } }
Изход:

Тази програма създава обект HashSet. Тогава методът addAll се извиква в обекта HashSet със списък като параметър. Този метод копира съдържанието на списъка в набора.
# 4) Използване на Java 8 Streams
Както вече се видя, можете също да използвате потоци Java 8, за да конвертирате списъка във всяка друга колекция, включително набор. Трябва да използвате метода stream (). Collect, за да направите това.
Следващата програма показва това изпълнение.
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create a list of strings List colorsList = Arrays.asList('Red', 'Green', 'Blue', 'Cyan', 'Magenta', 'Yellow'); System.out.println('Original List:' + colorsList); // Convert to set using stream and Collectors class toSet() method Set colorsSet = colorsList.stream().collect(Collectors.toSet()); System.out.println('The set from list:'); //print the set for (String x : colorsSet) System.out.print(x + ' '); }
Изход:

Горната програма е подобна на показаната в случай на преобразуване от списъка в масив. Първо, списъкът се преобразува в поток и след това методът collect събира елементите на потока и преобразува в set.
След като видяхме различни методи, които извършват преобразуването от списъка в набор, нека видим методите, които се използват за преобразуване на набора в списъка.
Конвертиране на Set To List
Подобно на начина, по който конвертирате списък в набор, можете също да конвертирате набор в списък. Можете да използвате същите методи, описани по-горе за това преобразуване. Единствената разлика е, че превключвате местата от списъка и задавате в програмата.
По-долу са дадени примери за преобразуване от набор в списък за всеки метод.
# 1) Използване на обикновена Java
importjava.util.*; class Main { public static void main(String() args) { // Create a set(hashset) and initialize it Set hashSet = new HashSet(); hashSet.add('Red'); hashSet.add('Green'); hashSet.add('Blue'); hashSet.add('Cyan'); hashSet.add('Magenta'); hashSet.add('Yellow'); //print the set System.out.println('The set elements:'); for (String x : hashSet) System.out.print(x + ' '); //create a list (ArrayList) List strList = new ArrayList(hashSet.size()); //traverse the set and add its elements to the list for (String x : hashSet) strList.add(x); //print the list System.out.println('
Created ArrayList:' + strList); } }
Изход:

Горната програма декларира и инициализира набор. След това създава списък и добавя всеки зададен елемент към списъка. И накрая, той отпечатва списъка.
# 2) Използване на конструктори
import java.util.*; class Main { public static void main(String() args) { // Create a set(hashset) of strings & initialize it Set hashSet = new HashSet(); hashSet.add('Delhi'); hashSet.add('Mumbai'); hashSet.add('Chennai'); hashSet.add('Kolkata'); //print the Set System.out.println('The set :'); for(String str: hashSet) System.out.print(str + ' '); //pass hashset to linkedlist constructor List l_List = new LinkedList(hashSet); //print the linked list System.out.println ('
LinkedList from set: ' + l_List); } }
Изход:

Тук можете да използвате конструктора на списък с обект като аргумент. Това копира всички зададени елементи в обекта на списъка.
# 3) Използване на метода addAll
import java.util.*; class Main { public static void main(String() args) { // Create a set(hashset) of strings & initialize it Set hashSet = new HashSet(); hashSet.add('Red'); hashSet.add('Green'); hashSet.add('Blue'); hashSet.add('Cyan'); hashSet.add('Magenta'); hashSet.add('Yellow'); //print the Set System.out.println('The set: '); for(String x:hashSet) System.out.print(x + ' '); //create a list(ArrayList) List colorList = new ArrayList(); //use addAll method to add elements from set colorList.addAll(hashSet); //print the list System.out.println('
The ArrayList from set: ' + colorList); } }
Изход:

В тази програма се създава списъчен обект. След това, използвайки метода Collections.addAll (), елементите от набора се добавят към списъка.
# 4) Използване на Java 8 Stream
import java.util.*; import java.util.stream.*; class Main { public static void main(String() args) { // Create a set(hashset) of strings & initialize the set Set hashSet = new HashSet(); hashSet.add('Yellow'); hashSet.add('Magenta'); hashSet.add('Cyan'); hashSet.add('Red'); hashSet.add('Green'); hashSet.add('Blue'); //print the Set System.out.println('The set:'); for(String str : hashSet) System.out.print(str + ' '); //create a list and assign it elements of set through stream and Collectors class List strList = hashSet.stream().collect(Collectors.toList()); //print the list System.out.println('
List obtained from set: ' + strList); } }
Изход:

Можете също така да използвате потоци Java 8 и метода collect, за да конвертирате набора в списъка, както е показано в горната програма.
Масив Vs Списък
Нека обсъдим някои от разликите между масив и списък.
Масив Списък Масивът е основна структура от данни в Java. Списъкът е интерфейс, който е част от рамката за събиране в Java, от която много от класовете могат да бъдат разширени като LinkedList, ArrayList и т.н. Има фиксиран размер Размерът на списъка е динамичен. Елементите на масива могат да бъдат достъпни чрез (). Членовете на списъка са достъпни чрез методи. Масивът може да има примитивни типове, както и обекти като негови елементи. Списъците могат да съдържат само обекти. Масивите могат да използват оператори с неговите елементи. Списъците не могат да използват оператори. Вместо това той изброява методите за използване. Масивите не могат да работят с генерични продукти, за да осигурят безопасност на типа. Списъците могат да бъдат общи.
често задавани въпроси
В # 1) Как да конвертирате списък в масив в Java?
Отговор: Основният метод за преобразуване на списък в масив в Java е използването на метода ‘toArray ()’ на интерфейса на списъка.
Простото повикване по-долу преобразува списъка в масив.
Object() array = list.toArray();
Съществуват и други методи, както е обсъдено по-горе, за преобразуване на списъка в масив.
В # 2) Дали е масив списък в Java?
Отговор: Не. Масивът е основна структура в Java с фиксирана дължина. Той не се простира от интерфейса на списъка. Структурата, която се простира от списъчния интерфейс и подобна на масива, е ArrayList.
В # 3) Как да конвертирате масив в списък в Java?
Отговор: Един от основните методи за преобразуване на масив в списък в Java е използването на метода asList () от класа Arrays.
List aList = Arrays.asList (myarray);
Освен това има още методи, които преобразуват масив в списък, както беше обсъдено по-рано в този урок.
В # 4) Кой е по-бърз набор или списък в Java?
Отговор: Зависи от данните, които се съхраняват. Ако данните са уникални, тогава списъкът е по-добър и по-бърз. Ако имате голям набор от данни, тогава отидете за набори. Зададената структура обикновено изисква 10 пъти повече памет от списъците.
В # 5) Каква е разликата между ArrayList и Set?
Отговор: Списъкът е колекция от подредени елементи, докато комплектът е колекция от неподредени елементи. Списъкът може да има дублиращи се елементи, но комплектът не може да има дублиращи се елементи.
Заключение
В този урок видяхме различни преобразувания на списъци към масива, набора и обратно. Видяхме и основните разлики между масив и списък.
В този следващ урок ще обсъдим подробно класовете от списъци като ArrayList, LinkedList и др.
=> Вижте Перфектното ръководство за обучение по Java тук.
Препоръчително четене
- Java Array Array: Как да копирате / клонирате масив в Java
- Java Array - Как да отпечатвате елементи от масив в Java?
- Списък на Java - Как да създадете, инициализирате и използвате списък в Java
- Типове данни за масив - int масив, двоен масив, масив от низове и т.н.
- Java Array - Декларирайте, създайте и инициализирайте масив в Java
- Как да предадете / върнете масив в Java
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Урок за дължина на масив Java с примери за кодове