如何创建一个具有两个值的ArrayList,一个是String,一个是int?

时间:2017-10-09 21:41:38

标签: java arraylist

我的朋友做了一个“游戏”,他让你用一堆if - else语句选择剑和东西。我试图通过制作一个基于文本的游戏来帮助他,其中随机怪物从ArrayList中产生。每个怪物都需要有一个名字和一个hp值。我需要能够选择一个随机怪物,我想这样做,所以我可以使用以下方法来扰乱ArrayList:

Collections.shuffle(Monster);

之前我制作了一个多维数组,但我不知道如何为每个地点制作一个带有两个值的ArrayList。

到目前为止,这是我的尝试:

List<String> Inventory = new ArrayList<String>();

    List<double[]> Monsters = new ArrayList<double[]>(2);
    List<String> Monster = new ArrayList<String>();

    Monster.add("Goblin");
    Monster.add("Josh");
    Monster.add("Gremlin");
    Monster.add("Unicorn");
    Monster.add("Possesed Elf");
    Monster.add("Shmorple");

    // Can I use Monsters.add(Monster);?
编辑:我完成了游戏,最后学习了如何使用类来制作对象;谢谢大家的建议。我已经从一些回复中学到了很多东西!

4 个答案:

答案 0 :(得分:4)

如果integer和String值具有一对一的映射关系,则可以使用HashMap的ArrayList。

如果没有,您可以使用这两个属性创建一个新类,并使用ArrayList来保存从该类创建的对象。

public class Monster{
    private int health;
    private String name;
}

List<Monster> monsterList = new ArrayList<>();

Collections.shuffle(monsterList);  //to shuffle it

答案 1 :(得分:0)

Array存储相同类型的对象,因此从技术上讲,您无法执行此操作。但是,对象在这里是一个怪物,所以要么是你的怪物阵列,要么从那个列表中随机播放:

List<Monster> monsters = new ArrayList<>()其中Monster是一个拥有个人属性的对象

使用org.apache.commons.lang3.tuple包中的配对,所以你有

List<Pair<String, Integer>> monsters = new ArrayList<>() monsters.add(Pair.of("monster_name", 20));

答案 2 :(得分:0)

我不知道你是否熟悉类(但如果你使用Java,你应该)。

所以你想要的是从列表中随机选择一个怪物,因此你首先需要为“怪物”类建模。 你说每个怪物都有一个名字和一个生命(一个整数),所以你可以创建以下类:

public class Monster
{
    private String name;
    private int hp;

    public Monster(String name, int hp)
    {
          this.name = name;
          this.hp = hp;
    }
    public String getName(){return name;}
    public int getHP(){return hp;}

}

此时您可以创建Monster列表:

List<Monster> monsters = new ArrayList<>();

您现在可以按以下方式填充它:

monsters.add(new Monster("Goblin", 10));
monsters.add(new Monster("Possesed Elf", 40));

等...

现在你可以利用

Collection.shuffle(monsters);
Monster randomMonster = monsters.get(0);
System.out.println("Random monster appear: " + randomMonster.getName());

请记住,您应该遵循Java最佳实践,并使用首字母小写和带有首字母大写的类来命名变量和方法

答案 3 :(得分:0)

我最终为Monster数组制作了一个类! (我仍然没有想出如何正确地将代码放到这个网站上)

public class Monster {
private String name;
private int health = 10;
private int damage = 5;


public Monster(String name, int Health, int Damage){
    this.name = name;
    this.health = Health;
    this.damage = Damage;
}

public String getName(){
    return name;
}

public int getHp(){
    return health;
}

public void setHP(int health){
    this.health = health;
}

public int getDmg() {
    return damage;
}

public void setDmg(int damage) {
    this.damage = damage;
}

}