Java에서 목록을 배열로 변환
어떻게 변환할 수 있는가?List
완전히Array
자바에서?
아래 코드를 확인하십시오.
ArrayList<Tienda> tiendas;
List<Tienda> tiendasList;
tiendas = new ArrayList<Tienda>();
Resources res = this.getBaseContext().getResources();
XMLParser saxparser = new XMLParser(marca,res);
tiendasList = saxparser.parse(marca,res);
tiendas = tiendasList.toArray();
this.adaptador = new adaptadorMarca(this, R.layout.filamarca, tiendas);
setListAdapter(this.adaptador);
배열을 채워야 한다.tiendas
의 가치로tiendasList
.
다음 중 하나:
Foo[] array = list.toArray(new Foo[0]);
또는:
Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
이는 참조 유형의 배열에만 해당된다는 점에 유의하십시오.원시 유형의 배열인 경우 기존 방법을 사용하십시오.
List<Integer> list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
업데이트:
지금 사용하는 것이 좋다.list.toArray(new Foo[0]);
, 아니다.list.toArray(new Foo[list.size()]);
.
JetBrains Intellij Idea 검사:
컬렉션을 배열로 변환하는 두 가지 스타일이 있다: 사전 크기 배열(예: c.toArray(new String[c.size()]) 또는 빈 배열(예: c.toArray(new String[0]))).
이전 자바 버전에서는 적절한 크기의 배열을 만드는 데 필요한 반사 호출이 상당히 느렸기 때문에 사전 크기 배열을 사용하는 것이 권장되었다.그러나 OpenJDK 6의 늦은 업데이트 이후 이 호출은 본질적으로 이루어졌고, 비어 있는 어레이 버전의 성능을 사전 크기 버전과 비교하여 동일하고 때로는 훨씬 더 좋게 만들었다.또한 데이터 경합이 크기 및 toArray 호출 사이에서 가능하기 때문에 사전 크기 어레이를 통과하는 것은 작업 중에 수집이 동시에 축소될 경우 어레이 끝에서 추가 null이 발생할 수 있으므로 동시 또는 동기화된 수집에는 위험하다.
이 검사는 (현대 Java에서 권장되는) 빈 어레이를 사용하거나 사전 크기 어레이(이전 Java 버전 또는 비 HotSpot 기반 JVM에서 더 빠를 수 있음)를 사용하는 통일된 스타일을 따를 수 있다.
Java 8의 대안:
String[] strings = list.stream().toArray(String[]::new);
Java 11 이후:
String[] strings = list.toArray(String[]::new);
나는 이것이 가장 간단한 방법이라고 생각한다.
Foo[] array = list.toArray(new Foo[0]);
Java 8 없이 내가 생각해낸 가장 좋은 점은:
public static <T> T[] toArray(List<T> list, Class<T> objectClass) {
if (list == null) {
return null;
}
T[] listAsArray = (T[]) Array.newInstance(objectClass, list.size());
list.toArray(listAsArray);
return listAsArray;
}
더 좋은 방법이 있다면 공유하십시오 :)
나는 그것을 해결하는 코드 조각을 우연히 발견했다.
//Creating a sample ArrayList
List<Long> list = new ArrayList<Long>();
//Adding some long type values
list.add(100l);
list.add(200l);
list.add(300l);
//Converting the ArrayList to a Long
Long[] array = (Long[]) list.toArray(new Long[list.size()]);
//Printing the results
System.out.println(array[0] + " " + array[1] + " " + array[2]);
변환은 다음과 같이 동작한다.
- 원래 목록 크기로 새 Long 어레이를 생성
- 새로 생성된 어레이 목록을 사용하여 원래 어레이 목록을 어레이로 변환
- 이 어레이를 롱 어레이(Long[])로 캐스트하는데, 이 어레이를 적절하게 '어레이'라고 이름 붙였다.
이건 작업이야.약간
public static Object[] toArray(List<?> a) {
Object[] arr = new Object[a.size()];
for (int i = 0; i < a.size(); i++)
arr[i] = a.get(i);
return arr;
}
그러면 주법.
public static void main(String[] args) {
List<String> list = new ArrayList<String>() {{
add("hello");
add("world");
}};
Object[] arr = toArray(list);
System.out.println(arr[0]);
}
ArrayList의 경우 다음 작업을 수행하십시오.
ArrayList<Foo> list = new ArrayList<Foo>();
//... add values
Foo[] resultArray = new Foo[list.size()];
resultArray = list.toArray(resultArray);
이 페이지에서 가져온 예: http://www.java-examples.com/copy-all-elements-java-arraylist-object-array-example
import java.util.ArrayList;
public class CopyElementsOfArrayListToArrayExample {
public static void main(String[] args) {
//create an ArrayList object
ArrayList arrayList = new ArrayList();
//Add elements to ArrayList
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
/*
To copy all elements of java ArrayList object into array use
Object[] toArray() method.
*/
Object[] objArray = arrayList.toArray();
//display contents of Object array
System.out.println("ArrayList elements are copied into an Array.
Now Array Contains..");
for(int index=0; index < objArray.length ; index++)
System.out.println(objArray[index]);
}
}
/*
Output would be
ArrayList elements are copied into an Array. Now Array Contains..
1
2
3
4
5
다음과 같이 toArray() api를 사용할 수 있다.
ArrayList<String> stringList = new ArrayList<String>();
stringList.add("ListItem1");
stringList.add("ListItem2");
String[] stringArray = new String[stringList.size()];
stringArray = stringList.toArray(stringList);
배열의 값은,
for(String value : stringList)
{
System.out.println(value);
}
이것(Ondrej의 대답):
Foo[] array = list.toArray(new Foo[0]);
내가 가장 흔히 보는 관용구다."0" 대신 실제 목록 크기를 사용하자고 제안하는 사람들은 여기서 무슨 일이 일어나고 있는지 오해하고 있다.toArray 호출은 지정된 어레이의 크기나 컨텐츠에 상관하지 않으며, 유형만 있으면 된다."Foo.class"가 훨씬 더 명확했을 실제 타입을 택했다면 더 좋았을 것이다.그렇다, 이 관용구는 더미 객체를 생성하지만 목록 크기를 포함한다는 것은 더 큰 더미 객체를 생성한다는 것을 의미한다.다시 말하지만, 그 물체는 어떤 방식으로도 사용되지 않는다; 그것은 단지 필요한 유형일 뿐이다.
다음을 시도해 보십시오.
List list = new ArrayList();
list.add("Apple");
list.add("Banana");
Object[] ol = list.toArray();
참조URL: https://stackoverflow.com/questions/9572795/convert-list-to-array-in-java
'programing' 카테고리의 다른 글
비동기 jdbc 호출이 가능한가? (0) | 2022.05.06 |
---|---|
Axios를 사용하여 객체를 JSon으로 게시 (0) | 2022.05.06 |
인터페이스와 추상 클래스의 차이를 어떻게 설명해야 하는가? (0) | 2022.05.06 |
Nuxt.js의 중첩된 경로에 선택적 파라미터를 생성하는 방법? (0) | 2022.05.06 |
공유 호스팅 환경에서 vue 앱을 배포하는 방법? (0) | 2022.05.06 |