in' String [] 'in Java'/> in' String [] 'in Java'/> in' String [] 'in Java'/> Konvertieren von 'ArrayList <String> in' String [] 'in Java | germanylandofinnovation.com

Frage Konvertieren von 'ArrayList in' String [] 'in Java


Wie kann ich einen konvertieren? ArrayList<String> Objekt zu a String[] Array in Java?


785
2017-10-28 11:30


Ursprung


Antworten:


List<String> list = ..;
String[] array = list.toArray(new String[0]);

Beispielsweise:

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

Das toArray() Methode ohne Übergabe eines Arguments zurückgibt Object[]. Sie müssen also ein Array als Argument übergeben, das mit den Daten aus der Liste gefüllt und zurückgegeben wird. Sie können auch ein leeres Array übergeben, aber Sie können auch ein Array mit der gewünschten Größe übergeben.

Wichtiges Update: Ursprünglich der obige Code verwendet new String[list.size()]. Jedoch, dieser Blogpost zeigt, dass aufgrund von JVM-Optimierungen new String[0] ist jetzt besser.


1504
2017-10-28 11:34



Eine Alternative in Java 8:

String[] strings = list.stream().toArray(String[]::new);

129
2018-05-18 12:14



ArrayList<String> arrayList = new ArrayList<String>();
Object[] objectList = arrayList.toArray();
String[] stringArray =  Arrays.copyOf(objectList,objectList.length,String[].class);

Mit copyOf kann auch ArrayList zu Arrays durchgeführt werden.


23
2018-05-01 08:00



Du kannst den ... benutzen toArray() Methode für List:

ArrayList<String> list = new ArrayList<String>();

list.add("apple");
list.add("banana");

String[] array = list.toArray(new String[list.size()]);

Oder Sie können die Elemente manuell zu einem Array hinzufügen:

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);
}

Hoffe das hilft!


22
2018-01-27 17:41



In Java 8:

String[] strings = list.parallelStream().toArray(String[]::new);

10
2018-02-05 15:54



Falls eine zusätzliche Manipulation der Daten erwünscht ist, für die der Benutzer eine Funktion wünscht, ist diese Vorgehensweise nicht perfekt (da die Klasse des Elements als zweiter Parameter übergeben werden muss), funktioniert aber:

import java.util.ArrayList; import java.lang.reflect.Array;

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
2018-01-04 22:37



Generika Lösung, um irgendwelche zu verdecken List<Type> zu 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;
}

Hinweis Du musst override toString() Methode.

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
2018-05-18 13:29



List <String> list = ...
String[] array = new String[list.size()];
int i=0;
for(String s: list){
  array[i++] = s;
}

2
2017-10-28 12:58



Mit JDK / 11 kann alternativ eine neu eingeführte API verwendet werden Collection.toArray(IntFunction<T[]> generator)


2
2017-07-26 18:38



Wenn Ihre Anwendung bereits Apache Commons lib verwendet, können Sie die akzeptierte Antwort leicht ändern, um nicht jedes Mal ein neues leeres Array zu erstellen:

List<String> list = ..;
String[] array = list.toArray(ArrayUtils.EMPTY_STRING_ARRAY);

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

Es gibt ein paar mehr vorbelegte leere Arrays verschiedener Typen in ArrayUtils.

Außerdem können wir JVM dazu bringen, auf diese Weise ein leeres Array für uns zu erstellen:

String[] array = list.toArray(ArrayUtils.toArray());

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

Aber es gibt wirklich keinen Vorteil, nur eine Frage des Geschmacks, IMO.


1
2018-02-14 13:16



Sie können verwenden Iterator<String> um die Elemente der ArrayList<String>:

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();
}

Jetzt können Sie Elemente von abrufen String[] Verwenden Sie einen beliebigen Loop.


1
2017-08-28 08:43