作者:林嘉文志鸿圣文 | 来源:互联网 | 2022-12-06 18:24
我正在为孩子们在学校生成4个字符的密码.引脚必须在数据库中存储为4个字符串.这是我用来生成引脚的方法:
public void generatePin() {
String pin;
Random r = new Random();
for (int i = 0; i
我的问题是:
如果我略微改变上面的方法,在我去的时候将每个引脚添加到String类型的ArrayList中,"搜索"该列表的最有效方法是什么,并确保一所学校的2名学生不会最终得到相同的针脚?
(注意:每所学校永远不会有超过1,200名学生)
编辑:
我最后做了以下事情:
public void generatePin() {
List pins = new ArrayList();
String pin;
Random r = new Random();
for (int i = 0; i
创建一个ArrayList来存储引脚,检查每一代后引脚是否存在于ArrayList中.如果没有,请将其分配给学生.如果是,则递减循环计数器以返回列表中刚引用的索引并生成新引脚.这将继续,直到生成一个唯一的引脚,它将被分配给学生.
1> Joakim Danie..:
使用Set,因为它不允许重复,记住并检查使用过的引脚.我将用于生成代码的代码移动到单独的方法中
public void generatePin() {
String pin;
Set generatedPins = new HashSet<>();
for (int i = 0; i
确切地说,我建议解释为什么要使用Set而不是List; 我看到你添加"因为它不允许重复",那么我认为现在答案很好解释了:)