menjadi' String [] 'di Java'/> menjadi' String [] 'di Java'/> menjadi' String [] 'di Java'/> Mengonversi 'ArrayList <String> menjadi' String [] 'di Java | gomecomputer.com

Pertanyaan Mengonversi 'ArrayList menjadi' String [] 'di Java


Bagaimana saya bisa mengonversinya ArrayList<String> keberatan dengan a String[] Array di Java?


785
2017-10-28 11:30


asal


Jawaban:


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

Sebagai contoh:

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

Itu toArray() metode tanpa melewati argumen apa pun Object[]. Jadi Anda harus mengirimkan array sebagai argumen, yang akan diisi dengan data dari daftar, dan dikembalikan. Anda juga bisa mengirimkan array kosong, tetapi Anda juga bisa mengirimkan array dengan ukuran yang diinginkan.

Pembaruan penting: Awalnya kode di atas digunakan new String[list.size()]. Namun, blogpost ini mengungkapkan bahwa karena pengoptimalan JVM, menggunakan new String[0] lebih baik sekarang.


1504
2017-10-28 11:34



Alternatif di 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);

Menggunakan copyOf, ArrayList ke array mungkin juga dilakukan.


23
2018-05-01 08:00



Anda dapat menggunakan toArray() metode untuk List:

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

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

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

Atau Anda dapat menambahkan elemen secara manual ke larik:

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

Semoga ini membantu!


22
2018-01-27 17:41



Di Java 8:

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

10
2018-02-05 15:54



dalam hal beberapa manipulasi data tambahan yang diinginkan, untuk mana pengguna menginginkan suatu fungsi, pendekatan ini tidak sempurna (karena membutuhkan melewati kelas elemen sebagai parameter kedua), tetapi bekerja:

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



Generik solusi untuk menyembunyikan apapun List<Type> untuk 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;
}

Catatan Kamu harus override toString() metode.

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



Dengan JDK / 11, seseorang dapat menggunakan API yang baru diperkenalkan Collection.toArray(IntFunction<T[]> generator)


2
2017-07-26 18:38



Jika aplikasi Anda sudah menggunakan lib Apache Commons, Anda dapat sedikit memodifikasi jawaban yang diterima untuk tidak membuat larik kosong baru setiap kali:

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

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

Ada beberapa array kosong pra-alokasi lagi dari berbagai jenis di ArrayUtils.

Juga kita dapat mengelabui JVM untuk membuat array kosong untuk kita seperti ini:

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

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

Tapi benar-benar tidak ada keuntungan dengan cara ini, hanya soal selera, IMO.


1
2018-02-14 13:16