2013-07-24 2 views
0

У меня есть два класса. один DAO, у которого есть Arrairylist of Users (пользователь - это класс пользователя) и один метод в другом классе, который проверяет, есть ли пользователь с нашим именем ввода или нет. Как использовать Hashmap (usernames, User) вместо Arraylist of Users?использовать hashmap вместо arraylist

public class UserDAO { 
private static UserDAO instance; 
private static String fileName = "sources/users.aaa"; 
//-------------------------------------------------------- 
private UserDAO(){ 

} 
//-------------------------------------------------------- 
public boolean storeUsers(ArrayList<User> Users){ 
    return IOFile.writeObject(Users, fileName); 
} 

//-------------------------------------------------------- 
public ArrayList<User> getUsers(){ 
    ArrayList<User> Users = (ArrayList<User>) IOFile.readObject(fileName); 
    return Users; 
} 
//-------------------------------------------------------- 
public static UserDAO getInstance(){ 
    if(instance == null) 
     instance = new UserDAO(); 
    return instance; 
} 

}

и один метод в другом классе, который проверяет, есть ли пользователь с нашим именем входа или нет:

User user = new User(firstName, lastName, userName, password); 
      ArrayList<User> users = UserDAO.getInstance().getUsers(); 
      for (User user2 : users) { 

       if (user.equals(user2)){ 
        system.out.println ("Error!!"); 
        return; 
       } 
      } 
      users.add(user); 
      UserDAO.getInstance().storeUsers(users); 
+0

Если вы хотите сопоставить один объект с другим, используйте HashMap. Но чтобы понять, каково это, вы можете покрыть [мой учебник по HashMap] (http://volodial.blogspot.com/2013/07/internal-life-of-hashmap-in-java.html) сначала –

ответ

2

В этом случае, так как вы просто пытаетесь проверьте, существует ли пользователь, вы можете использовать HashSet. Набор имеет постоянный поиск времени. Поэтому вместо вашего цикла это будет users.contains(user).

Вы могли бы использовать карту, если бы искали что-то иное, чем фактический объект User, например. отображение имен для пользователей.

В любом случае, если вы используете коллекцию, в которой вы проверяете, вы должны правильно использовать как equals, так и hashCode.

+0

Я хочу иметь карту с ключом: имя пользователя и значение: пользователь. –

+0

в этом случае вы можете использовать hashmap –

Смежные вопросы