Узнайте, содержит ли ArrayList более одного элемента

1

У меня есть список имен пользователей и список паролей. У двух или более пользователей может быть один и тот же пароль.

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
    Вы действительно должны создать класс User . Вы бы просто имели список пользователей, а затем перебирали его и проверяли каждый пароль.
  • 1
    Первоначально, когда я спросил об этом, я предполагал, что нам не разрешили реализовать наш собственный класс. Поговорив с профессором, я подтвердил, что класс пользователя в порядке. Ура!
Теги:

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню