sourcecode

Java에서 'ArrayList'를 'String[]'로 변환

copyscript 2022. 7. 28. 23:43
반응형

Java에서 'ArrayList'를 'String[]'로 변환

어떻게 변환하면ArrayList<String>에 반대하다.String[]어레이를 Java로 표시합니까?

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

예를 들어 다음과 같습니다.

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

toArray()인수 반환을 전달하지 않는 메서드Object[]따라서 배열을 인수로 전달해야 합니다.배열은 목록의 데이터로 채워지고 반환됩니다.빈 어레이를 전달할 수도 있지만 원하는 크기의 어레이를 전달할 수도 있습니다.

중요 업데이트:원래 위의 코드가 사용되었습니다.new String[list.size()]단, 이 블로그 포스트에서는 JVM의 최적화로 인해new String[0]이제 좀 나아졌어요.

Java 8의 다른 방법:

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

Java 11+:

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

를 사용할 수 있습니다.toArray()의 방법List:

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

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

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

또는 요소를 배열에 수동으로 추가할 수 있습니다.

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

이게 도움이 됐으면 좋겠네요!

Java-11부터는 API를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

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
ArrayList<String> arrayList = new ArrayList<String>();
Object[] objectList = arrayList.toArray();
String[] stringArray =  Arrays.copyOf(objectList,objectList.length,String[].class);

copyOf를 사용하면 어레이에 대한 ArrayList도 수행할 수 있습니다.

Java 8의 경우:

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

Java 8에서는 다음을 사용하여 실행할 수 있습니다.

String[] arrayFromList = fromlist.stream().toArray(String[]::new);

Apache Commons lib를 이미 사용하고 있는 어플리케이션에서는 매번 빈 배열을 새로 작성하지 않도록 승인된 답변을 약간 변경할 수 있습니다.

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

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

에는, 다른 타입의 빈 어레이가 몇개 더 할당되어 있습니다.ArrayUtils.

또한 다음과 같이 JVM을 속여 빈 어레이를 만들 수 있습니다.

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

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

하지만 이 방법으로는 아무 장점이 없어요 단지 취향의 문제일 뿐이에요, IMO.

를 사용하여 의 요소를 반복할 수 있습니다.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();
}

이제 요소를 검색할 수 있습니다.String[]모든 루프를 사용합니다.

범용 솔루션을 통해 모든 데이터 보호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;
}

주의: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);

Java 11에서는Collection.toArray(generator)방법.다음 코드는 문자열의 새 배열을 만듭니다.

List<String> list = List.of("one", "two", "three");
String[] array = list.toArray(String[]::new)

참조해 주세요.

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

사용자가 함수를 원하는 데이터의 추가 조작이 필요한 경우 이 접근법은 완벽하지 않지만(요소의 클래스를 두 번째 파라미터로 전달해야 하므로) 다음과 같이 작동합니다.

import java.displaces.ArrayList.java.lang.reflect를 Import합니다.어레이

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()));
  }
}
    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    String [] strArry= list.stream().toArray(size -> new String[size]);

코멘트별로 변환의 구조를 설명하는 문단을 추가했습니다.먼저 List가 String 스트림으로 변환됩니다.그런 다음 Stream.toArray를 사용하여 스트림의 요소를 배열로 변환합니다.위의 마지막 문장에서 "size -> new String [ size ]는 실제로 String 스트림의 크기를 사용하여 String 배열을 할당하는 IntFunction 함수입니다.이 문장은 다음 문장과 동일합니다.

IntFunction<String []> allocateFunc = size -> { 
return new String[size];
};   
String [] strArry= list.stream().toArray(allocateFunc);

다음 방법을 사용하여 List를 String 배열로 변환할 수 있습니다.

 Object[] stringlist=list.toArray();

완전한 예는 다음과 같습니다.

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

어레이 리스트를 어레이로 변환하는 방법에는 다음 3가지가 있습니다.

  1. public T[] to Array(T[] a) - 이와 같이 리스트 크기를 가진 배열을 작성한 후 String[] ar = new String[list.size()]로 메서드에 넣습니다.

    ar = list.toArray(arr);

  2. Public get() 메서드 - 이 방법으로 목록을 반복하고 요소를 하나씩 배열에 넣습니다.

참조: Java에서 ArrayList를 Array로 변환하는 방법

언급URL : https://stackoverflow.com/questions/4042434/converting-arrayliststring-to-string-in-java

반응형