gpt4 book ai didi

Java - 检查 ArrayList 是否有重复项

转载 作者:行者123 更新时间:2023-12-01 14:10:56 28 4
gpt4 key购买 nike

<分区>

我正在生成 4 个字符的密码供 children 在学校使用。引脚必须作为 4 个字符串存储在数据库中。这是我用来生成引脚的方法:

public void generatePin() {
String pin;
Random r = new Random();
for (int i = 0; i < createdStudents.size(); i++) {
int rand = r.nextInt((3998 - 1) + 1) + 1;
if (rand < 10) {
pin = "000" + rand;
} else if (rand < 100) {
pin = "00" + rand;
} else if (rand < 1000) {
pin = "0" + rand;
} else {
pin = "" + rand;
}
createdStudents.get(i).setPin(pin);
}
}

我的问题是:

如果我稍微改变上面的方法,将每个引脚添加到字符串类型的 ArrayList,那么“搜索”该列表并确保一所学校的 2 名学生不这样做的最有效方法是什么最终得到相同的 pin?

(注意:每所学校的学生人数永远不会超过 1,200 人)

编辑:

我最终做了以下事情:

public void generatePin() {
List<String> pins = new ArrayList<String>();
String pin;
Random r = new Random();
for (int i = 0; i < createdStudents.size(); i++) {
int rand = r.nextInt((9999 - 1) + 1) + 1;
if (rand < 10) {
pin = "000" + rand;
} else if (rand < 100) {
pin = "00" + rand;
} else if (rand < 1000) {
pin = "0" + rand;
} else {
pin = "" + rand;
}

if (!pins.contains(pin)) {
createdStudents.get(i).setPin(pin);
pins.add(pin);
} else {
i--;
}
}
}

创建一个ArrayList来存放pin,每次生成后检查ArrayList中是否存在该pin。如果没有,请将其分配给学生。如果是,则减少循环计数器以返回到列表中刚刚引用的索引并生成新的引脚。这将一直持续到生成唯一的 pin,然后将其分配给学生。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com