java - 如何防止列表中字符参数重复?

标签 java list arraylist character

我正在为学校项目开发一个小游戏。据称,玩家可以从字符列表中进行选择(稍后我将把选择的字符放入数组中),并且每个字符都可以有一个仅由单个字符组成的名称。

我将字符池放在 ArrayList 中,但我不知道如何防止它们将重复的字母作为名称。

ArrayList<Character> names = new ArrayList<Character>();   

        while (names.size() < 10) {
            char random = (char) ((char) rand.nextInt(26)+'A');
            if (!names.contains(random)) {
                names.add(random);
            }
        }  

ArrayList<Person> charpool = new ArrayList<Person>();

        while (charpool.size() < 10){
            charpool.add(new Person(names.get(rand.nextInt(10)), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        (r1.nextInt(100)+1), (r1.nextInt(100)+1), 
                        true, (r1.nextInt(100)+1), 1));
        }

不要介意那长得离谱的 int 变量列表,它是用于随机技能的。它可能会更漂亮,但目前我不在乎。

我对整个 Java 事物还很陌生,而且我以前没有使用过列表或类似的东西。

最佳答案

如果我理解正确的话,当您填写 ArrayList<Person> charpool 时,您希望每个人都有独特的性格。 .

您可以做的就是从 names 中删除该字符,一旦你使用过它。

while(charpool.size() < 10) {
    int index = rand.nextInt(names.size()); //Use names.size() since the names ArrayList will get smaller each iteration
    charpool.add(new Person(names.get(index), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), (r1.nextInt(100)+1), true, (r1.nextInt(100)+1), 1));
    names.remove(index);
}

关于java - 如何防止列表中字符参数重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553823/

相关文章:

java - 为什么分配 String 值的 Integer 泛型在打印时不会发出错误?

C#:创建一个可以将枚举作为 List<string> 返回的通用方法

java - 防止 while 循环上的 IndexOutOfBoundsException [Java]

java - 如何将 arraylist 的多个项目与特定位置的另一个 arraylist 进行比较?

java - 从 EJB 创建文本文件,无需 java.io

java - Arrays.equals 是否可以与 java 中的字符一起使用

javascript - 使用 Angular 将项目添加到列表顶部

java - 在Java中将两个arrayLists合并为一个新的arrayList,没有重复且按顺序排列

Java VM 在 Mac OS X 下在 Spring 持久层启动时崩溃

sharepoint - 如何让SharePoint接受文件名中带有特殊字符的附件?