简体   繁体   English

ArrayList和String [] AND Object []

[英]ArrayList and String[] AND Object[]

I have searched this, but couldn't find what i need, so i created a new post. 我搜索了这个,但找不到我需要的东西,所以我创建了一个新帖子。 I hope to understand about this problem. 我希望了解这个问题。 Thanks. 谢谢。

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

Can someone explain that when i pass name into add() method then I get a error, but when i pass name1 into add() method, it works fine, why is it so... 有人可以解释当我将name传递给add()方法然后我得到一个错误,但是当我将name1传递给add()方法时,它工作正常,为什么会这样...

arraylist is an ArrayList of String elements, so you can't add an array instance to it. arraylist是String元素的ArrayList,因此您无法向其添加数组实例。 arraylist1 is an ArrayList of Object elements, so you can add an array to it, since an array is an Object . arraylist1Object元素的ArrayList ,因此您可以向其添加数组,因为数组是Object

If you wish to add the individual elements of the arrays to the List s, both add calls should be changed to addAll : 如果您希望将数组的各个元素添加到List ,则两个add调用都应更改为addAll

arrayList.addAll(Arrays.asList(name));
arraylist1.addAll(Arrays.asList(name1));
arraylist.add(name);// error here 

Error because name is an array. 错误,因为name是一个数组。 Not a String . 不是String You are trying to add a Array object to an ArrayList which accepts only Strings. 您正在尝试将Array对象添加到仅接受字符串的ArrayList。

arraylist1.add(name1);// not error

No error because name1 is an Object array. 没有错误,因为name1是一个Object数组。 In Java every class is an Object, even an array of Objects also an Object . 在Java中, 每个类都是一个Object,甚至一个Object数组也是一个Object Hence it accepted it as an Object. 因此它接受它作为对象。 Though your name1 is an array of Objects, as a whole it is an Object itself first. 虽然你的name1是一个Objects数组,但作为一个整体,它首先是一个Object。

You seem to be thinking that when you do 当你这样做时,你似乎在想

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

It is supposed to add all the elements of the array to the list. 它应该将数组的所有元素添加到列表中。 That's not true. 这不是真的。 The add method just adds the one parameter it is given to the list. add方法只是将它给出的一个参数添加到列表中。

In the first case, that one element is an array of strings. 在第一种情况下,一个元素是一个字符串数组。 An array of strings is not a string itself, so this fails. 字符串数组本身不是字符串,因此失败。

In the second case, that one element is an array of objects. 在第二种情况下,一个元素是一个对象数组。 An array of objects is itself an object, and therefore it is added to the list. 对象数组本身就是一个对象,因此它被添加到列表中。 But note that the array is added, not the objects inside it. 但请注意,添加了数组 ,而不是其中的对象。

1st example throws an error because you declare an ArrayList of Strings but later try to add an Array of Strings (not a String , but a collection of Strings ) to it. 第一个示例抛出一个错误,因为您声明了一个StringsArrayList ,但后来尝试添加一个Strings Array (不是String ,但是一collection Strings )。

2nd example works because you declare and ArrayList of Objects and later you add Objects to it (understand that everything in Java is an Object : a String is an Object , an Array also and for example a Boolean is an Object also, you can try adding True in the 2nd example and you will see that it will also work). 第二个例子是有效的,因为你声明了Objects ArrayList ,然后你向它添加了Objects (理解Java中的所有东西都是一个Object :一个String是一个Object ,一个Array也是例如一个Boolean也是一个Object ,你可以尝试添加在第二个示例中为True ,您将看到它也可以工作)。

Here i see some misunderstanding of String and String[] both are not same, while seeing your following code 在这里,我看到一些对StringString[]误解都不相同,同时看到你的下面的代码

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

it seems like you are trying to add String[] object into ArrayList of type String . 好像你正试图添加String[]对象为ArrayList类型的String If you want to add name array into list then your list type must be String[] . 如果要将name数组添加到列表中,则列表类型必须为String[] So becasue type are different so you cannot add String[] object into list of type String . 因此,因为类型不同所以你不能将String[]对象添加到String类型的列表中。 But When your have list of type Object then of course you can add any object into it. 但是当你有Object类型的列表时,你当然可以在其中添加任何对象。

IDE tells us about object data type clearly. IDE清楚地告诉我们对象数据类型。

First code snippet 第一个代码片段

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);

在此输入图像描述 At line 6, object named arraylist has type ArrayList<java.lang.String> but you try something like this: ArrayList<java.lang.String[]> cause an incompatibility data type error. 在第6行,名为arraylist对象具有类型ArrayList<java.lang.String>但您尝试这样的事情: ArrayList<java.lang.String[]>导致不兼容数据类型错误。

Second code snippet 第二个代码段

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

在此输入图像描述 When step debug to line 10, name1 is has data type java.lang.Object , arraylist1 has datatype ArrayList<Object> . 当步骤调试到第10行时, name1的数据类型为java.lang.Objectarraylist1数据类型为ArrayList<Object> Therefore, add element name1 to arraylist1 success. 因此,将元素name1添加到arraylist1成功。

转换 ArrayList<object> 串起来<div id="text_translate"><p>嗨,我正在尝试练习 java,我才刚刚开始。 为了练习,我正在尝试构建一个简单的扑克游戏,但遇到了卡片数组列表,我正在尝试将其打印出来,但只有控制台的地址是 output。 自然我尝试使用.toString 方法并创建我自己的toString 方法来尝试检查数组列表是否输入正确。 Bellow 是我的卡片 class 和 Arraylist{Card}Deck。 贝娄是我的代码</p><pre>package poker; import java.util.ArrayList; public class Card { private String _suit; private int _cardNum; public Card(int cardNum, String suit) { _suit = suit; _cardNum = cardNum; } public String toString() { return _suit +_cardNum; } static ArrayList&lt;`enter code here`Card&gt; Deck = new ArrayList&lt;Card&gt;() {{ add(new Card(0,"Hearts")); add(new Card(1,"Hearts")); add(new Card(1,"Hearts")); add(new Card(2,"Hearts")); add(new Card(3,"Hearts")); add(new Card(4,"Hearts")); add(new Card(5,"Hearts")); add(new Card(6,"Hearts")); add(new Card(7,"Hearts")); add(new Card(8,"Hearts")); add(new Card(9,"Hearts")); add(new Card(10,"Hearts")); add(new Card(11,"Hearts")); add(new Card(12,"Hearts")); add(new Card(13,"Hearts")); add(new Card(0,"Spades")); add(new Card(1,"Spades")); add(new Card(2,"Spades")); add(new Card(3,"Spades")); add(new Card(4,"Spades")); add(new Card(5,"Spades")); add(new Card(6,"Spades")); add(new Card(7,"Spades")); add(new Card(8,"Spades")); add(new Card(9,"Spades")); add(new Card(10,"Spades")); add(new Card(11,"Spades")); add(new Card(12,"Spades")); add(new Card(13,"Spades")); add(new Card(0,"Clubs")); add(new Card(1,"Clubs")); add(new Card(2,"Clubs")); add(new Card(3,"Clubs")); add(new Card(4,"Clubs")); add(new Card(5,"Clubs")); add(new Card(6,"Clubs")); add(new Card(7,"Clubs")); add(new Card(8,"Clubs")); add(new Card(9,"Clubs")); add(new Card(10,"Clubs")); add(new Card(11,"Clubs")); add(new Card(12,"Clubs")); add(new Card(13,"Clubs")); add(new Card(0,"Diamonds")); add(new Card(1,"Diamonds")); add(new Card(2,"Diamonds")); add(new Card(3,"Diamonds")); add(new Card(4,"Diamonds")); add(new Card(5,"Diamonds")); add(new Card(6,"Diamonds")); add(new Card(7,"Diamonds")); add(new Card(8,"Diamonds")); add(new Card(9,"Diamonds")); add(new Card(10,"Diamonds")); add(new Card(11,"Diamonds")); add(new Card(12,"Diamonds")); add(new Card(13,"Diamonds")); }}; }</pre><p> 和我的 MainApp</p><pre> package poker; import java.util.Random; import static java.lang.System.out; public class MainApp { public static void main(String[] args) { for(int i = 0;i &lt;Card.Deck.size();i++) { out.println(Card.toString()); } } }</pre><p> 在打印行中是我的问题发生的地方。 如何将 arraylist 从 class 类型转换为用于输出的字符串? 提前致谢!</p></div></object> - Convert ArrayList<Object> to string

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 数组列表 <Object> 到ArrayList <String> - ArrayList<Object> to ArrayList<String> 比较对象ArrayList和String ArrayList - Compare Object ArrayList with String ArrayList 转换ArrayList <String> 到ArrayList <Object> - Convert ArrayList<String> to ArrayList<Object> 数组列表 <String> 对象分配 - ArrayList<String> Object assignment arraylist:将 object 与字符串进行比较 - arraylist: comparing an object with a string 将对象强制转换为ArrayList <String> - cast object to ArrayList<String> 转换 ArrayList<object> 串起来<div id="text_translate"><p>嗨,我正在尝试练习 java,我才刚刚开始。 为了练习,我正在尝试构建一个简单的扑克游戏,但遇到了卡片数组列表,我正在尝试将其打印出来,但只有控制台的地址是 output。 自然我尝试使用.toString 方法并创建我自己的toString 方法来尝试检查数组列表是否输入正确。 Bellow 是我的卡片 class 和 Arraylist{Card}Deck。 贝娄是我的代码</p><pre>package poker; import java.util.ArrayList; public class Card { private String _suit; private int _cardNum; public Card(int cardNum, String suit) { _suit = suit; _cardNum = cardNum; } public String toString() { return _suit +_cardNum; } static ArrayList&lt;`enter code here`Card&gt; Deck = new ArrayList&lt;Card&gt;() {{ add(new Card(0,"Hearts")); add(new Card(1,"Hearts")); add(new Card(1,"Hearts")); add(new Card(2,"Hearts")); add(new Card(3,"Hearts")); add(new Card(4,"Hearts")); add(new Card(5,"Hearts")); add(new Card(6,"Hearts")); add(new Card(7,"Hearts")); add(new Card(8,"Hearts")); add(new Card(9,"Hearts")); add(new Card(10,"Hearts")); add(new Card(11,"Hearts")); add(new Card(12,"Hearts")); add(new Card(13,"Hearts")); add(new Card(0,"Spades")); add(new Card(1,"Spades")); add(new Card(2,"Spades")); add(new Card(3,"Spades")); add(new Card(4,"Spades")); add(new Card(5,"Spades")); add(new Card(6,"Spades")); add(new Card(7,"Spades")); add(new Card(8,"Spades")); add(new Card(9,"Spades")); add(new Card(10,"Spades")); add(new Card(11,"Spades")); add(new Card(12,"Spades")); add(new Card(13,"Spades")); add(new Card(0,"Clubs")); add(new Card(1,"Clubs")); add(new Card(2,"Clubs")); add(new Card(3,"Clubs")); add(new Card(4,"Clubs")); add(new Card(5,"Clubs")); add(new Card(6,"Clubs")); add(new Card(7,"Clubs")); add(new Card(8,"Clubs")); add(new Card(9,"Clubs")); add(new Card(10,"Clubs")); add(new Card(11,"Clubs")); add(new Card(12,"Clubs")); add(new Card(13,"Clubs")); add(new Card(0,"Diamonds")); add(new Card(1,"Diamonds")); add(new Card(2,"Diamonds")); add(new Card(3,"Diamonds")); add(new Card(4,"Diamonds")); add(new Card(5,"Diamonds")); add(new Card(6,"Diamonds")); add(new Card(7,"Diamonds")); add(new Card(8,"Diamonds")); add(new Card(9,"Diamonds")); add(new Card(10,"Diamonds")); add(new Card(11,"Diamonds")); add(new Card(12,"Diamonds")); add(new Card(13,"Diamonds")); }}; }</pre><p> 和我的 MainApp</p><pre> package poker; import java.util.Random; import static java.lang.System.out; public class MainApp { public static void main(String[] args) { for(int i = 0;i &lt;Card.Deck.size();i++) { out.println(Card.toString()); } } }</pre><p> 在打印行中是我的问题发生的地方。 如何将 arraylist 从 class 类型转换为用于输出的字符串? 提前致谢!</p></div></object> - Convert ArrayList<Object> to string 将String对象添加到ArrayList - Adding String object to ArrayList 转换ArrayList <String[]> 转换为String [] []或Object [] [] - Converting ArrayList<String[]> to String[][] or Object[][] 如何填充ArrayList <String> 从ArrayList <Object> - How to populate an ArrayList<String> from ArrayList<Object>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM