[英]Java: Anything similar to arrays as list for arrays?
有一種方法可以從varargs
獲取List
,即Arrays.asList(o1, o2, o3 etc)
有沒有類似的方法來獲取array
? 例如像Arrays.asArray(o1, o2, o3 etc)
更新:
o1,o2,o3
是不同類型的對象
您可以將構造用作String[] str = new String[] {"a", "b", "c"}
可變參數是數組!
在MyMethod(Param param, MyObject... args)
您可以分配MyObject[] array = args;
List.toArray()
可能就是你要找的。 可以在此處找到 Javadoc。
使用這樣的東西:
Element[] array = new Element[] { new Element(1),new Element(2),new Element(3) };
或者您可以創建一個列表並將其轉換為數組。 這是我從 java2s 得到的一個很好的示例:
import java.util.ArrayList;
import java.util.List;
/** List to array */
public class ToArray {
public static void main(String[] args) {
List list = new ArrayList();
list.add("Blobbo");
list.add("Cracked");
list.add("Dumbo");
// list.add(new Date()); // Don't mix and match!
// Convert a collection to Object[], which can store objects
// of any type.
Object[] ol = list.toArray();
System.out.println("Array of Object has length " + ol.length);
// This would throw an ArrayStoreException if the line
// "list.add(new Date())" above were uncommented.
String[] sl = (String[]) list.toArray(new String[0]);
System.out.println("Array of String has length " + sl.length);
}
}
你的意思是varargs
數組? 只需將它用作數組,因為它已經是一個數組。
public void t(Object obj...) {
Object obj0 = obj[0];
}
或者你說的是靜態列表中的數組? 然后使用像Object objs = new Object[] {new Object, new Object, Object}
這樣的初始化構造。
此外,從List<T>
到數組使用方法List.toArray()
。
或者從varargs
通過List
到數組,只是為了好玩:
public void t(Object obj...) {
Object[] a = Arrays.asList(obj).toArray();
// or
Object[] b = Arrays.asList(new Object, new Object).toArray();
}
.
org.apache.commons.lang3.ArrayUtils
T ArrayUtils.toArray(T... t);
沒關系)
請參閱此示例:
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
String[] array = list.toArray(new String[0]); // Collection to array
for (int i = 0; i < array.length; ++i) {
String contents = array[i];
System.out.print(contents+"\t");
}
System.out.println();
List<String> list2 = Arrays.asList(array); // Array back to Collection
for (String s2 : list2) {
String s3 = s2;
System.out.print(s3+"\t");
}
}
您可以使用臨時數組:
MyType[] arr = new MyType[]{new MyType(1), new MyType(2)...};
或者創建一個有點棘手的方法,例如:
public static <T> T[] createArray(T... args) {
return args;
}
然后像這樣使用它:
MyType[] arr = createArray(new MyType(1), new MyType(2)...);
您可以直接將可變參數分配給相同類型的數組
static void intTest(int... v) {
int[] arr = v;
}
static void objTest(Object... obj) {
Object[] arr = obj;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.