我有一个用户名的数组列表和一个密码数组列表。两个或更多用户可以使用相同的密码。
ArrayList<String> u = new ArrayList<String>();
ArrayList<String> p = new ArrayList<String>();
这些数组是从以下格式的文件中填充的:
username password
像这样;
String line = null;
String split[] = null;
while ((line = reader.readLine()) != null){
split = line.split("\\s+");
u.add(split[0]);
p.add(split[1]);
}
我有一个生成密码的强力算法,我想查找生成的密码是否匹配。
String password = bruteForce()
if (passwords.contains(password)){
int index = passwords.indexOf(password);
System.out.println("Username: " + usernames.get(index));
System.out.println("Password: " + password);
}
如果没有用户拥有相同的密码,这种方法很有效。如果两个用户拥有相同的密码;它将抓住第一个匹配并打印出来,跳过第二个用户。
我需要一种方法来确定是否有多次出现相同的密码,获取每次出现的索引,然后是匹配的用户名。
答案 0 :(得分:4)
除了您不应存储纯文本密码或字符串密码之外,还要回答以下问题:
尝试使用Collections.frequency
int amount = Collections.frequency(yourCollection, yourObject);
至于你的设计,你也可以尝试一些更多的东西:
List<Tuple<String, String>> accounts = new ArrayList<>();
//Or even making an account object and then
List<Account> accounts = new ArrayList<>();