ArrayList和String [] AND Object []

时间:2015-07-29 08:29:24

标签: java

我搜索了这个,但无法找到我需要的东西,所以我创建了一个新帖子。我希望了解这个问题。感谢。

ArrayList<String> arraylist= new ArrayList<String>();
arraylist.add("Nguyen");
arraylist.add("Viet");

String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here 

ArrayList<Object> arraylist1=new ArrayList<Object>();
arraylist1.add("Nguyen");
arraylist1.add("Viet");
Object[] name1={"Quan","Doan","Thi","Ha"};
arraylist1.add(name1);// not error

有人可以解释当我将name传递给add()方法时,我会收到错误,但是当我将name1传递给add()方法时,它运行正常,为什么是这样......

6 个答案:

答案 0 :(得分:21)

arraylist是String元素的ArrayList,因此您无法向其添加数组实例。 arraylist1ArrayListObject元素,因此您可以向其添加数组,因为数组是Object

如果您希望将数组的各个元素添加到List,则add个调用都应更改为addAll

arrayList.addAll(Arrays.asList(name));
arraylist1.addAll(Arrays.asList(name1));

答案 1 :(得分:8)

project/Build.scala

错误,因为arraylist.add(name);// error here 是一个数组。不是name。您正在尝试将Array对象添加到仅接受字符串的ArrayList。

String

没有错误,因为arraylist1.add(name1);// not error name1数组。在Java 中,每个类都是一个Object,甚至一个Object数组也是一个Object 。因此它接受它作为对象。虽然你的 name1 是一个对象数组,但作为一个整体,它本身就是一个对象。

答案 2 :(得分:6)

当你做

时,你好像在想
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here 

应该将数组的所有元素添加到列表中。这不是真的。 add方法只是将它给出的一个参数添加到列表中。

在第一种情况下,一个元素是一个字符串数组。字符串数组本身不是字符串,因此失败。

在第二种情况下,一个元素是一个对象数组。对象数组本身就是一个对象,因此它被添加到列表中。但请注意,添加了数组,而不是其中的对象。

答案 3 :(得分:5)

第一个示例引发错误,因为您声明了ArrayList Strings但后来尝试添加Array Strings(不是String,但是它的collection Strings

第二个示例有效,因为您声明了ArrayList Objects以及稍后向其添加Objects(了解Java中的所有内容都是Object:a {{1 }}也是StringObject也是Array也是Boolean,你可以尝试在第二个例子中添加Object而你会看到它也会起作用。)

答案 4 :(得分:2)

在这里,我看到对StringString[]的误解两者都不相同,同时看到以下代码

String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);// error here

您似乎正在尝试将String[]对象添加到ArrayList类型的String中。如果要将name数组添加到列表中,则列表类型必须为String[]。因此,因为类型不同,所以您无法将String[]对象添加到类型String的列表中。但是当你有Object类型的列表时,你当然可以在其中添加任何对象。

答案 5 :(得分:1)

IDE清楚地告诉我们对象数据类型。

第一个代码段

In this error code snippet:
ArrayList<String> arraylist= new ArrayList<String>();
arraylist.add("Nguyen");
arraylist.add("Viet");
String[] name={"Quan","Doan","Thi","Ha"};
arraylist.add(name);

enter image description here 在第6行,名为arraylist的对象的类型为ArrayList<java.lang.String> 但你尝试这样的事情:ArrayList<java.lang.String[]>导致不兼容的数据类型错误。

第二个代码段

ArrayList<Object> arraylist1=new ArrayList<Object>();
arraylist1.add("Nguyen");
arraylist1.add("Viet");
Object[] name1={"Quan","Doan","Thi","Ha"};
arraylist1.add(name1);

enter image description here 当步骤调试到第10行时,name1的数据类型为java.lang.Objectarraylist1的数据类型为ArrayList<Object>。因此,请将元素name1添加到arraylist1成功。