如何显示数组中特定项的数量?

时间:2016-04-27 03:57:31

标签: java arrays class

假设我有一个名为items的类,其代码如下:

    import java.util.ArrayList;

public class items {
    private ArrayList<Item> itemlistweapons = new ArrayList<Item>();
    private ArrayList<Item> itemlistapparel = new ArrayList<Item>();
    private ArrayList<Item> itemlistaid = new ArrayList<Item>();
    private ArrayList<Item> itemlistmisc = new ArrayList<Item>();

    public void additem(String name, String type){
        if("Weapon".equals(type)){
            itemlistweapons.add(new Item(name, type));
        }
        else if ("Apparel".equals(type)){
            itemlistapparel.add(new Item(name, type));
        }
        else if ("Aid".equals(type)){
            itemlistaid.add(new Item(name, type));
        }
        else if ("Misc.".equals(type)){
            itemlistmisc.add(new Item(name, type));
        }
    }

    public void dropitem(String name){
        for(int i = 0; i < itemlistweapons.size(); i++){
            if(itemlistweapons.get(i).getname().equals(name)){
                itemlistweapons.remove(i);
            }
        }
        for(int i = 0; i < itemlistapparel.size(); i++){
            if(itemlistapparel.get(i).getname().equals(name)){
                itemlistapparel.remove(i);
            }
        }
        for(int i = 0; i < itemlistaid.size(); i++){
            if(itemlistaid.get(i).getname().equals(name)){
                itemlistaid.remove(i);
            }
        }
        for(int i = 0; i < itemlistmisc.size(); i++){
            if(itemlistmisc.get(i).getname().equals(name)){
                itemlistmisc.remove(i);
            }
        }
        }


    @Override
    public String toString(){
        String items = "";
        if (itemlistweapons.size() > 0){
            items += "Weapons\n";
        for (Item itemlist1 : itemlistweapons) {
            items += itemlist1 + "\n";
        }
        }

        if (itemlistapparel.size() > 0){
            items += "Apparel\n";
        for (Item itemlist2 : itemlistapparel) {
            items += itemlist2 + "\n";
        }
        }
        if (itemlistaid.size() > 0){
            items += "Aid\n";
        for (Item itemlist3 : itemlistaid) {
            items += itemlist3 + "\n";
        }
        }
        if (itemlistmisc.size() > 0){
            items += "Misc.\n";
        for (Item itemlist4 : itemlistmisc) {
            items += itemlist4 + "\n";
        }
        }
        return items;
    }

}

我希望能够显示该列表中特定项目的数量。

例如,让我们说,对于我的基于文本的RPG游戏,玩家将25件金币添加到他的库存中。我不希望它在他的库存中显示“Gold”这个词25次,而是“Gold(25)”代替。我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我对你的问题感到困惑......但这里什么都没有......

size()方法可以为您提供您正在寻找的内容。它是Collection接口的一部分,ArrayList实现了它。

来自JavaDoc:

  

int size()

     

返回此列表中的元素数。如果此列表包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE。

话虽如此,下面的代码演示了如何在实践中使用此方法:

List<GoldCoin> gold = new ArrayList<GoldCoin>();
// Code ...
System.out.println("Gold (" + gold.size() + ")");

但是,您似乎已经在上面的代码示例中使用了这种方法......所以我不确定这是否真的是您需要的。

答案 1 :(得分:0)

如果你想要一个arraylist中的物品数量,例如你拥有的武器数量,你可以简单地使用itemlistweapons.size()如果你想计算一些特定的武器,比如你有多少剑,你可以增加一个变量如果当前武器是剑,则循环通过itemlistweapons。对于像黄金这样的东西,你不想使用arraylist,因为变量就足够了,无论何时获得金币都可以增加。