如何制作具有两个值的单个ArrayList,一个是String而另一个是int?

问题描述:

我的朋友做了一个“游戏”,让他选择使用一堆if-else语句来选择剑和东西。我想通过制作一个基于文本的游戏来让他成为顶级人物,其中一个随机怪物从ArrayList中产生。每个怪物需要有一个名字和一个HP值。我需要能够选择一个随机怪物,我想使它这样我就可以使用加扰的ArrayList:如何制作具有两个值的单个ArrayList,一个是String而另一个是int?

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

编辑:我完成了比赛,我结束了学习如何使用类来使物体;感谢大家谁建议它。我刚刚听到一些回应,我学到了很多东西!

+2

创建一个类来封装两个值并将实例添加到列表中。 – shmosel

+1

请遵守Java命名约定;特别是在公共论坛上发布时。在Java变量中,**总是**在'camelCase'中 - 'PascalCase'保留给类。 –

+0

请注意'List '在Java中是不可能的(至少在当前情况下),因为'double'是**原始数据类型**。你需要使用它的包装类'Double'。 – Zabuza

我最终使一类的怪物阵!(我还没有想出如何正确地把代码放到这个网站上)

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; 
} 

} 
+0

然后,你应该问问你的问题与谁发布答案,而不是在这么长时间后发布答案的其他人 – Ravi

如果整数和String值具有一对一的映射关系,那么可以使用HashMap的ArrayList。

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

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

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

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

数组存储相同类型的对象,所以在技术上你不能这样做。然而,对象是一个怪物在这里,所以无论你的怪物和洗牌的阵列从该列表中,像这样:

List<Monster> monsters = new ArrayList<>()这里的怪物是拥有org.apache.commons.lang3.tuple个体的属性

使用对的对象包,所以你必须

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

我不知道,如果你熟悉的类(但如果你使用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;} 

} 

在这一点上,你可以创建你的怪物列表:

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的最佳实践,并将其命名变量和方法与第一个字母小写和类与第一个字母大写