2014-10-04 34 views
-3

我想知道如何在自定义ArrayList中添加字符串值。Java:如何在自定义ArrayList中添加字符串值

我曾尝试下面的代码,但它给了我错误

ArrayList<MyCustom> aList = new ArrayList<MyCustom>(); 

aList.add("My Name"); 

,并试图这也;

aList.addAll("My Name"); 

aList.add((MyCustom)"My Name"); 
+0

'String'不延长'MyCustom',让你在的地方使用'String' 'MyCustom'。顺便说一下,我很确定,'MyCustom'也不会将'String'扩展为'String'。 – 2014-10-04 11:02:22

+0

@Dmitry Ginzburg对此有何其他选择? – 2014-10-04 11:02:57

+1

这取决于你想达到什么。例如,你可以使用'ArrayList '或者(如果只包含'String's),你应该使用'ArrayList ' – 2014-10-04 11:03:26

回答

0

假设你MyCustom类,并有物业说name

class MyCustom{ 
    String name; 
    public setName(String name){ 
     this.name=name; 
    } 
    ..... 
    } 

ArrayList<MyCustom> aList = new ArrayList<MyCustom>(); 
MyCustom myCustomObject=new MyCustom(); 
myCustomObject.setName("abc"); // here set the properties for your custom class object 
aList.add(myCustomObject); 
0

您已经创建了一个将包含MyCustom类型的对象,所以,除非你的对象扩展字符串,你不能添加字符串给它的列表。

如果您希望将包含字符串和MyCustom对象,所以你必须创建列表像这样的列表:

List<Object> list = new ArrayList<Object>(); 
list.add(new MyCustom(...)); 
list.add("Some String"); 
+1

使用原始类型是不好的,如果不是为了向后兼容,很可能会被Java禁止。使用'List '和'ArrayList '而不是'List'和'ArrayList' – 2014-10-04 11:08:42

+0

@KuluLimpa我意识到我忘记了当我输入答案。谢谢。 – Hunsu 2014-10-04 19:12:16

0

正如前面提到的,你的“MyCustom”既不是孩子,也不字符串的父(也不可能)。 这会使我们想到您的“MyCustom”对象或您希望它执行/执行的操作。

通过使用下面的代码,您将List中的对象类型限制为Mycustom,这很好。但是如果你必须在该列表中添加一个字符串,那么你应该删除这些类型。另外使用List接口是一种更好的做法。

ArrayList<MyCustom> aList = new ArrayList<MyCustom>(); 
List aList = new ArrayList(); //This will allow all objects to be added to list. 

,或者根据您的需要进行MyCustom对象,你可以修改它使用如下: aList.add(new MyCustom("Name String"));aList.add(new MyCustom().setName("Name String"));

0

的ArrayList是用Java泛型类型。意味着它可以存储任何对象。但要将对象存储在ArrayList中,我们需要指定类名,这意味着ArrayList只存储在声明数组列表时指定的类名。

你的情况

ArrayList<MyCustom> aList = new ArrayList<MyCustom>(); 

声明只具有MyCustom类对象,但

aList.add("My Name"); 

你存储的字符串值的数组列表。并且String类和MyCustom类之间没有关系。所以java编译器显示错误。要实现这一目标需要实现两种

ArrayList<String> aList = new ArrayList<String>(); 

aList.add("My Name"); 

Class MyCustom { 

String field; 

public void setField(String f) { 

field=f; 
} 

public String getField() { 

return field; 
} 

} 

然后

ArrayList<MyCustom> aList = new ArrayList<MyCustom>(); 

aList.add(new MyCustom().setField("My Name")); 
相关问题