Java:如何在自定义ArrayList中添加字符串值



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

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

ArrayList<MyCustom> aList = new ArrayList<MyCustom>();
aList.add("My Name");

也试过这个;

aList.addAll("My Name");
aList.add((MyCustom)"My Name");

假设您的类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);

如前所述,您的"MyCustom"既不是String的子级,也不是String的父级(两者都不能)。这将使我们了解您的"MyCustom"对象的需要,或者您希望它做什么/执行什么。

通过使用下面的代码,您可以将List中的对象类型限制为Mycustom,这很好。但是,如果您必须在该列表中添加一个String,那么您应该删除这些类型。此外,使用列表界面也是一种更好的做法。

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

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

在您的情况下是

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

您已经创建了一个列表,该列表将包含类型为MyCustom的对象,因此除非您的对象扩展了String,否则您无法向其中添加String。

如果你想要一个包含String和MyCustom对象的列表,那么你必须创建这样的列表:

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