'ArrayList 변환 Java에서 'String []'으로
Java에서 ArrayList<String>
객체를 String[]
배열 로 어떻게 변환 할 수 있습니까?
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);
다음과 같은 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);
}
도움이 되었기를 바랍니다!
ArrayList<String> arrayList = new ArrayList<String>();
Object[] objectList = arrayList.toArray();
String[] stringArray = Arrays.copyOf(objectList,objectList.length,String[].class);
copyOf를 사용하여 ArrayList를 배열로도 수행 할 수 있습니다.
JDK / 11부터 API Collection.toArray(IntFunction<T[]> generator)
를 사용하여 다음과 같은 결과를 얻을 수 있습니다 .
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
Java 8에서
String[] strings = list.parallelStream().toArray(String[]::new);
제네릭 솔루션은 어떤 은밀한하기 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);
List <String> list = ...
String[] array = new String[list.size()];
int i=0;
for(String s: list){
array[i++] = s;
}
사용자가 함수를 원하는 데이터의 추가 조작이 필요한 경우이 접근 방식은 완벽하지는 않지만 (요소의 클래스를 두 번째 매개 변수로 전달해야하므로) 작동합니다.
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()));
}
}
애플리케이션이 이미 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.
Iterator<String>
의 요소를 반복하는 데 사용할 수 있습니다 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[]
루프 를 사용하여 요소를 검색 할 수 있습니다 .
Java 8에서는 다음을 사용하여 수행 할 수 있습니다.
String[] arrayFromList = fromlist.stream().toArray(String[]::new);
다음 방법을 사용하여 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]);
}
Java 11에서는 Collection.toArray(generator)
메서드를 사용할 수 있습니다 . 다음 코드는 새로운 문자열 배열을 만듭니다.
List<String> list = List.of("one", "two", "three");
String[] array = list.toArray(String[]::new)
from java.base's java.util.Collection.toArray()
.
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;
}
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
String [] strArry= list.stream().toArray(size -> new String[size]);
First, List is converted to a String stream. Then it uses Stream.toArray to return an array containing the elements of the String stream. "size -> new String[size]" is an IntFunction function that allocates a String array with size of the String stream. It can be rearranged as
IntFunction<String []> allocateFunc = size -> {
return new String[size];
};
String [] strArry= list.stream().toArray(allocateFunc);
Converting an ArrayList into String[]:
//Creating an ArrayList of String object and populating it
ArrayList<String> list = new ArrayList<String>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
list.add("Item 4");
//Creating a String array with the same size as that of the ArrayList
String[] stringArray = new String[list.size()];
//Now converting the ArrayList to a String array
stringArray = list.toArray(stringArray);
참고URL : https://stackoverflow.com/questions/4042434/converting-arrayliststring-to-string-in-java
'programing tip' 카테고리의 다른 글
.NET의 형식 문자열에서 중괄호 (중괄호)를 이스케이프하는 방법 (0) | 2020.09.28 |
---|---|
Firefox 또는 Chrome에서 수동으로 HTTP POST 요청을 실행하려면 어떻게합니까? (0) | 2020.09.28 |
grep을 사용하여 Linux에서 파일 이름 만 표시하려면 어떻게해야합니까? (0) | 2020.09.28 |
Java 클래스 경로 내의 디렉토리에있는 모든 jar 포함 (0) | 2020.09.28 |
동시성과 병렬성의 차이점은 무엇입니까? (0) | 2020.09.28 |