Konvertuokite „ArrayList <String> į„ String [] “„ Java “

Kaip konvertuoti ArrayList<String> objektą į String[] masyvą Java?

792
28 окт. Alexas nustatė spalio 28 d. 2010-10-28 14:30 '10, 14:30, 2010-10-28 14:30
@ 16 atsakymų
 List<String> list = ..; String[] array = list.toArray(new String[0]); 

Pavyzdžiui:

 List<String> list = new ArrayList<String>(); //add some stuff list.add("android"); list.add("apple"); String[] stringArray = list.toArray(new String[0]); 

toArray() metodas neperduodamas jokių argumentų grąžina Object[] . Todėl jums reikia perduoti masyvą kaip argumentą, kuris bus užpildytas iš sąrašo ir grąžinamas. Taip pat galite perduoti tuščią masyvą, bet taip pat galite perduoti masyvą, kurio dydis yra reikalingas.

Svarbus atnaujinimas . Iš pradžių buvo naudojamas kodas „ new String[list.size()] . Tačiau šiame dienoraštyje matyti, kad naudojant JVM optimizavimą, naudojant new String[0] dabar new String[0] geriau.

1512
28 окт. atsakymas, kurį Bozho pateikė spalio 28 d 2010-10-28 14:34 '10, 14:34, 2010-10-28 14:34

Alternatyva „Java 8“:

 String[] strings = list.stream().toArray(String[]::new); 
131
18 мая '15 в 15:14 2015-05-18 15:14 atsakymas pateikiamas Vitalii Fedorenko gegužės 18 d., 15 val. 15:14 2015-05-18 15:14
 ArrayList<String> arrayList = new ArrayList<String>(); Object[] objectList = arrayList.toArray(); String[] stringArray = Arrays.copyOf(objectList,objectList.length,String[].class); 

Naudojant copyOf, ArrayList masyvams taip pat galima atlikti.

23
01 мая '13 в 11:00 2013-05-01 11:00 atsakymą pateikė Rajesh Vemula 01 gegužės 13 d. 11:00 2013-05-01 11:00

toArray() galite naudoti „ toArray() metodą:

 ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); String[] array = list.toArray(new String[list.size()]); 

Arba galite rankiniu būdu įtraukti elementus į masyvą:

 ArrayList<String> list = new ArrayList<String>(); list.add("apple"); list.add("banana"); String[] array = new String[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); } 

Tikiuosi, kad tai padės!

23
27 янв. Atsakymas duodamas kodekubed 2016-01-27 20:41 '16 at 20:41 2016-01-27 20:41

„Java 8“:

 String[] strings = list.parallelStream().toArray(String[]::new); 
10
05 февр. atsakymas į Mike Shauneu 05 vasaris 2016-02-05 18:54 '16 at 18:54 2016-02-05 18:54

Naudodami JDK / 11, galite naudoti naują API Collection.toArray(IntFunction<T[]> generator) kad pasiektumėte tokį patį kaip:

 List<String> list = List.of("x","y","z"); String[] arrayBeforeJDK11 = list.toArray(new String[0]); String[] arrayAfterJDK11 = list.toArray(String[]::new); // similar to Stream.toArray 
3
26 июля '18 в 21:38 2018-07-26 21:38 atsakymas pateikiamas nullpointer liepos 26 d. 18, 21:38 2018-07-26 21:38

Bendrasis paslėpto List<Type> sprendimas List<Type> į String [] :

 public static <T> String[] listToArray(List<T> list) { String [] array = new String[list.size()]; for (int i = 0; i < array.length; i++) array[i] = list.get(i).toString(); return array; } 

Pastaba Turite override toString() metodo override toString() .

 class Car { private String name; public Car(String name) { this.name = name; } public String toString() { return name; } } final List<Car> carList = new ArrayList<Car>(); carList.add(new Car("BMW")) carList.add(new Car("Mercedes")) carList.add(new Car("Skoda")) final String[] carArray = listToArray(carList); 
3
18 мая '17 в 16:29 2017-05-18 16:29 atsakymą įteikė Khaled Lela gegužės 18 d. 17 val

Jei reikalingas papildomas duomenų apdorojimas, dėl kurio vartotojas nori funkcijos, šis metodas nėra tobulas (kadangi tai reikalauja, kad elemento klasė būtų perduota kaip antrasis parametras), tačiau ji veikia:

importuoti java.util.ArrayList; importuoti java.>

 public class Test { public static void main(String[] args) { ArrayList<Integer> al = new ArrayList<>(); al.add(1); al.add(2); Integer[] arr = convert(al, Integer.class); for (int i=0; i<arr.length; i++) System.out.println(arr[i]); } public static <T> T[] convert(ArrayList<T> al, Class clazz) { return (T[]) al.toArray((T[])Array.newInstance(clazz, al.size())); } } 
3
05 янв. Atsakymą pateikė Roberto Attias 05 Jan 2017-01-05 01:37 '17 at 1:37 2017-01-05 01:37
 List <String> list = ... String[] array = new String[list.size()]; int i=0; for(String s: list){ array[i++] = s; } 
2
28 окт. atsakymas duotas HZhang 28 sp 2010-10-28 15:58 '10, 15:58, 2010-10-28 15:58

Jei jūsų programa jau naudoja „Apache Commons lib“, galite šiek tiek pakeisti priimtą atsakymą, kad kiekvieną kartą būtų sukurtas naujas tuščias masyvas:

 List<String> list = ..; String[] array = list.toArray(ArrayUtils.EMPTY_STRING_ARRAY); // or if using static import String[] array = list.toArray(EMPTY_STRING_ARRAY); 

ArrayUtils yra keletas kitų iš anksto paskirstytų skirtingų tipų tuščių matricų.

Mes taip pat galime apgauti JVM, kad sukurtume tuščią matricą:

 String[] array = list.toArray(ArrayUtils.toArray()); // or if using static import String[] array = list.toArray(toArray()); 

Tačiau nėra jokio pranašumo, tik skonio, TJO.

1
14 февр. atsakymą pateikė Yoory N. 14 vasaris. 2018-02-14 16:16 '18, 4:16, 2018-02-14, 16:16

Naudodami šį metodą galite konvertuoti sąrašo masyvą į eilutę:

  Object[] stringlist=list.toArray(); 

Visas pavyzdys:

 ArrayList<String> list=new ArrayList<>(); list.add("Abc"); list.add("xyz"); Object[] stringlist=list.toArray(); for(int i = 0; i < stringlist.length ; i++) { Log.wtf("list data:",(String)stringlist[i]); } 
1
26 июня '18 в 20:48 2018-06-26 20:48 atsakymą pateikė Panchal Nilkanth birželio 26 d. 18 val. 20:48 2018-06-26 20:48

Galite naudoti „ Iterator<String> kad kartotumėte „ ArrayList<String> elementus:

 ArrayList<String> list = new ArrayList<>(); String[] array = new String[list.size()]; int i = 0; for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); i++) { array[i] = iterator.next(); } 

Dabar galite išskirti elementus iš String[] naudodami bet kurią kilpą.

1
28 авг. atsakymą pateikė Vatsal Chavda 28 rug . 2017-08-28 11:43 '17 at 11:43 am 2017-08-28 11:43
 private String[] prepareDeliveryArray(List<DeliveryServiceModel> deliveryServices) { String[] delivery = new String[deliveryServices.size()]; for (int i = 0; i < deliveryServices.size(); i++) { delivery[i] = deliveryServices.get(i).getName(); } return delivery; } 
0
27 дек. Atsakymą pateikė Denis Fedak 27 d. 2017-12-27 12:28 '17 at 12:28 2017-12-27 12:28

Toliau pateikiami keli būdai, kaip „ArrayList“ konvertuoti į „Java“:

1–Array ()

Sąraše pateikiamas naudingumo metodas, vadinamas „Aray“ (), kuris priima tuščią masyvą ir užpildo jį masyvų sąrašo elementais.

 public static String[] convertListToArrayUsingToArray(List<String> names) { String[] namesArr = new String[names.size()]; namesArr = names.toArray(namesArr); return namesArr; } 

2 - Tradicinis metodas

Kitas būdas konvertuoti sąrašą į masyvą yra tai padaryti rankiniu būdu, iteriuojant per sąrašo elementus ir populiarinant masyvą taip:

 public static String[] convertListToArrayTraditionalWay(List<String> names) { String[] namesArr = new String[names.size()]; for(int i=0 ; i<names.size(); i++) { namesArr[i] = names.get(i); } return namesArr; } 

3 - java 8

Naudodami „Java 8“, galite konvertuoti sąrašą į masyvą vienoje eilutėje naudodami srauto () ir „Aray“ () naudingumo metodus.

 public static String[] convertListToArrayJava8(List<String> names) { String[] namesArr = names.stream().toArray(String[]::new); return namesArr; } 

Nuoroda: „ Java“ - sąrašas į konversiją

0
13 июля '18 в 13:15 2018-07-13 13:15 Atsakymą pateikė Husseinas Terekas liepos 13 d. 18 val. 15:15 2018-07-13 13:15

Naudojant toArray() metodą ArrayList, galite gauti 0bject[] . Nustatykite Object[] į String[] Čia yra kodo pavyzdys:

 ArrayList<String> arr_List=new ArrayList<String>(); Object[] str_Arr=arr_List.toArray(); 
-3
10 апр. atsakymą pateikė vartotojo3354457 10 balandis. 2014-04-10 08:56 '14 at 8:56 2014-04-10 08:56

Pakanka:

 int[] d = new int[list.size()]; for (int i = 0; i < list.size(); i++) { d[i] = list.get(i); } 
-7
06 сент. atsakymas, kurį pateikė user2753336 Sep 06 2013-09-06 10:06 '13, 10:06, 2013-09-06 10:06

Kiti klausimai apie žymeklių arba Užduoti klausimą