有办法从varargs
即Arrays.asList(o1, o2, o3 etc)
Java:任何与数组类似的数组列表?
得到List
有没有类似的方式得到一个array
?例如。像Arrays.asArray(o1, o2, o3 etc)
更新:
o1,o2,o3
是不同类型的对象
有办法从varargs
即Arrays.asList(o1, o2, o3 etc)
Java:任何与数组类似的数组列表?
得到List
有没有类似的方式得到一个array
?例如。像Arrays.asArray(o1, o2, o3 etc)
更新:
o1,o2,o3
是不同类型的对象
您可以使用结构为String[] str = new String[] {"a", "b", "c"}
'String [] str = {“a”,“b”,“c”};' – 2012-02-28 08:53:19
可变参数是阵!
在MyMethod(Param param, MyObject... args)
您可以分配MyObject[] array = args;
见这个例子:
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");
}
}
使用这样的事情:
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);
}
}
因此它必须是列表中的同一类型的对象?如果我需要不同类型的对象 – Jim 2012-02-28 08:49:51
@Jim,那么可以发布另一个关于这个问题。 :) – ApprenticeHacker 2012-02-28 08:50:58
您可以使用临时数组:
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)...);
你是指数组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();
}
。
您可以分配给可变参数同样类型的数组直接
static void intTest(int... v) {
int[] arr = v;
}
static void objTest(Object... obj) {
Object[] arr = obj;
}
Arrays.asList(O1,O2,O3等).toArray() – 2012-02-28 07:54:57
当然要确保你真的想要* *的对象数组一些(深不可测)的原因(http:// stackoverflow。com/a/6105705/202214) – 2012-02-28 15:49:57