Vì vậy, thông thường ArrayList.toArray()
sẽ trả về một loại Object[]
.... nhưng được cho là một
Arraylist
đối tượng Custom
, làm thế nào để tôi toArray()
trả về một loại Custom[]
chứ không phải Object[]
?
Vì vậy, thông thường ArrayList.toArray()
sẽ trả về một loại Object[]
.... nhưng được cho là một
Arraylist
đối tượng Custom
, làm thế nào để tôi toArray()
trả về một loại Custom[]
chứ không phải Object[]
?
Câu trả lời:
Như thế này:
List<String> list = new ArrayList<String>();
String[] a = list.toArray(new String[0]);
Trước Java6, bạn nên viết:
String[] a = list.toArray(new String[list.size()]);
bởi vì việc triển khai nội bộ sẽ phân bổ lại một mảng có kích thước phù hợp để bạn có thể thực hiện trước nó tốt hơn. Vì Java6, mảng trống được ưa thích, xem .toArray (new MyClass [0]) hoặc .toArray (new MyClass [myList.size ()])?
Nếu danh sách của bạn không được gõ đúng, bạn cần thực hiện phân vai trước khi gọi tớiArray. Như thế này:
List l = new ArrayList<String>();
String[] a = ((List<String>)l).toArray(new String[l.size()]);
Nó không thực sự cần phải quay lại Object[]
, ví dụ: -
List<Custom> list = new ArrayList<Custom>();
list.add(new Custom(1));
list.add(new Custom(2));
Custom[] customs = new Custom[list.size()];
list.toArray(customs);
for (Custom custom : customs) {
System.out.println(custom);
}
Đây là Custom
lớp học của tôi : -
public class Custom {
private int i;
public Custom(int i) {
this.i = i;
}
@Override
public String toString() {
return String.valueOf(i);
}
}
arrayList.toArray(new Custom[0]);
http://doad.oracle.com/javase/7/docs/api/java/util/ArrayList.html#toArray%28java.lang.Object[[%29
Tôi đã có câu trả lời ... điều này dường như đang hoạt động rất tốt
public int[] test ( int[]b )
{
ArrayList<Integer> l = new ArrayList<Integer>();
Object[] returnArrayObject = l.toArray();
int returnArray[] = new int[returnArrayObject.length];
for (int i = 0; i < returnArrayObject.length; i++){
returnArray[i] = (Integer) returnArrayObject[i];
}
return returnArray;
}
@SuppressWarnings("unchecked")
public static <E> E[] arrayListToArray(ArrayList<E> list)
{
int s;
if(list == null || (s = list.size())<1)
return null;
E[] temp;
E typeHelper = list.get(0);
try
{
Object o = Array.newInstance(typeHelper.getClass(), s);
temp = (E[]) o;
for (int i = 0; i < list.size(); i++)
Array.set(temp, i, list.get(i));
}
catch (Exception e)
{return null;}
return temp;
}
Mẫu:
String[] s = arrayListToArray(stringList);
Long[] l = arrayListToArray(longList);