找出ArrayList是否包含多个元素

时间:2014-03-31 16:21:38

标签: java

我有一个用户名的数组列表和一个密码数组列表。两个或更多用户可以使用相同的密码。

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

如果没有用户拥有相同的密码,这种方法很有效。如果两个用户拥有相同的密码;它将抓住第一个匹配并打印出来,跳过第二个用户。

我需要一种方法来确定是否有多次出现相同的密码,获取每次出现的索引,然后是匹配的用户名。

1 个答案:

答案 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<>();