从概念上讲,这是怎么回事?
我有一个ArrayList
ArrayList<SomeClass> myArray = new ArrayList<SomeClass>();然后我在上面添加了这样的东西
myArray.add(new myArray(1, 2, 3));发布于 2014-05-23 19:39:30
我有一个数组 ArrayList myArray =新ArrayList();
不,你没有数组。数组是使用brackes []声明的,如下所示:
int[] myArray;您有一个ArrayList类的对象。该对象将在内部使用数组来存储数据,并在需要分配更多值时动态地更改较新的数组。
然后我在上面添加了这样的东西 MyArray.add(新myArray(1,2,3));
从概念上讲,这是错误的,甚至不会编译。如果要在数组中添加多个值,则应使用接收另一个集合的ArrayList#addAll方法。然后,有两种方法可以在一条语句中传递Collection:
Arrays#asList创建一个列表:
myArray.addAll(Arrays.asList(1,2,3));您应该考虑到应该为您的ArrayList指定泛型,而不是使用原始数据:
ArrayList<Integer> myArray = new ArrayList<Integer>();
myArray.addAll(new ArrayList<Integer>() {{
add(1);
add(2);
add(3);
}});更多信息:
请注意,如果您有一个绑定到自定义类的ArrayList,假设是ArrayList<SomeClass> myArrayList,那么编译器将阻止您将元素添加到没有通过IS-A测试的列表中(由instanceof操作符注意到),因此代码如下:
ArrayList<SomeClass> myArrayList = new ArrayList<SomeClass>();
myArrayList..addAll(new ArrayList<Integer>() {{
add(1);
add(2);
add(3);
}});因为Integer不是SomeClass,所以无法编译。类似于这段代码:
ArrayList<SomeClass> myArrayList = new ArrayList<SomeClass>();
myArray.add(Arrays.asList(1, 2, 3));但是由于使用了类型擦除,您可以使用原始类型来欺骗编译器。例如:
public void addData(ArrayList yourArrayList, Object anyData) {
yourArrayList.add(anyData);
}然后在代码中调用此方法:
ArrayList<String> myArrayList = new ArrayList<String>(); //allows Strings only
myArrayList.add("Hello world");
//myArrayList.add(0); //this won't compile because trying to add an Integer
addData(myArrayList, 0); //this will compile for using raw ArrayList and sending an Integer
System.out.println(myArrayList);它将印刷:
[Hello world, 0]发布于 2014-05-23 19:40:54
myArray.add(new myArray(1, 2, 3));这是不正确的,也不编译,因为myArray不是一个类型,它只是一个引用,您需要一些类型的整数,或者如果您想要添加另一个列表,然后使用addAll。
你可以用这样的东西。
List<Integer> myArray = new ArrayList<>(); // specify with generics type parameter
//do some things and then
myArray.addAll(Arrays.asList(1,2,3)); // use this helper method to add a list to another list或者,如果您只想创建和填充它,只需使用
List<Integer> myArray = Arrays.asList(1,2,3,4,5);发布于 2014-05-23 19:48:21
我想我知道你想做什么,说你有这个。
ArrayList<Integer[]> myArray = new ArrayList<Integer[]>();如果你想给它添加一个数组,你就可以调用
myArray.add(((Integer[]) new int[] { 0, 1, 2 }));它将将数组0、1、2添加到ArrayList的下一个索引中。
对于exmaple,以下代码
ArrayList<Integer[]> myArray = new ArrayList<Integer[]>();
myArray.add(((Integer[]) new int[] { 0, 1, 2 }));
myArray.add(((Integer[]) new int[] { 1, 0, 2 }));
myArray.add(((Integer[]) new int[] { 3, 2, 1 }));将产生以下结果:
myArray index 0 = [0, 1, 2]
myArray index 1 = [1, 0, 2]
myArray index 2 = [3, 2, 1]这是你的问题吗?
https://stackoverflow.com/questions/23837205
复制相似问题