如何检查ArrayList中新对象的参数?

时间:2016-04-26 01:29:01

标签: java arraylist

我正在尝试创建一个名为“items”的类,其中包含四个私有ArrayList<String>对象,其方法根据项目的类型将项目添加到ArrayLists。有四个ArrayLists:

private ArrayList<String> itemlistweapons = new ArrayList<String>();
private ArrayList<String> itemlistapparel = new ArrayList<String>();
private ArrayList<String> itemlistaid = new ArrayList<String>();
private ArrayList<String> itemlistmisc = new ArrayList<String>();

将项目添加到列表的方法具有以下代码:

public void additem(String name, String type){
    itemlistweapons.add(new Item(name, type).toString());
}

它添加的Item对象来自另一个名为Item的类,其中包含一个构造函数,该构造函数采用项目名称和类型。

所以,我想知道的是,我怎么能这样说:

public void additem(String name, String type){
    if //the item added has the type "weapon"
        itemlistweapons.add(new Item(name, type).toString());
    else if //the item added has the type "apparel"
        itemlistapparel.add(new Item(name, type).toString());
    else if //the item added has the type "aid"
        itemlistaid.add(new Item(name, type).toString());
    else if //the item added has the type "misc"
        itemlistmisc.add(new Item(name, type).toString());

我会用什么代替这些评论?

1 个答案:

答案 0 :(得分:2)

 if ("weapon".equals(type)) {

注意:

  • 首先放置字符串文字以避免NullPointerExceptions

  • 如果无法处理给定类型,则应抛出IllegalArgumentException

  • 也许switch/case块是一个不错的选择

  • 您可能希望List<Item>代替List<String>。你总是可以从Item中获取String,反之则可能很困难。

  • 如果您有List<Item>,则可能不再需要四个单独的列表了。将所有内容保存在一个列表中。您可以随时过滤类型以获得武器。那会更灵活。

  • 也许类型应该是enum