2016-10-28 37 views
-4

所以我有這樣的代碼:我可以搜索地圖內的對象嗎?

public class AccountService { 

private Map<String, Account> accounts = DatabaseClass.getAccounts(); 


public AccountService(){ 
    Account acc = new Account(); 
    acc.setNickname("1"); 
    acc.setPassword("2"); 
    accounts.put("1", acc); 
} 
public List<Account> getAllAccounts(){ 
    return new ArrayList<Account>(accounts.values()); 
} 

public Account addAccount(String nickname, Account acc){ 
    accounts.put(nickname, acc); 
    return acc; 
} 

public Account validateAccount(String nickname, String password){ 
    Account acc = new Account(nickname,password); 
    if (accounts.containsValue(acc)){ 
     acc.setNickname("true"); 
     acc.setPassword("true"); 
    } 
    return acc; 
} 


public class AccountResource { 

AccountService accountservice = new AccountService(); 


@GET 
public List<Account> getAllAccounts(){ 
    return accountservice.getAllAccounts(); 

} 

@POST 
@Path("/{nickname}") 
public Account addAccount(@PathParam("nickname") String nickname,Account acc){ 
    return accountservice.addAccount(nickname,acc); 

} 


@GET 
@Path("/{nickname}/{password}") 
public Account validateAccount(@PathParam("nickname")String nickname, @PathParam("password") String password){ 
return accountservice.validateAccount(nickname , password); 
} 



public class DatabaseClass { 

private static Map<String, Playlist> playlists = new HashMap<String, Playlist>(); 
private static Map<String, Account> accounts = new HashMap<String, Account>(); 


public static Map<String,Account> getAccounts(){ 
    return accounts;  
} 

}

我想看看地圖(賬戶)中包含具有相同的參數作爲acc的對象。 constainsValue的部分不適用於我。有什麼建議麼? 我已經添加新對象到與值1和2。

+0

賬戶申報在哪裏?關鍵是什麼? – rmlan

+4

你是否爲'Account'類重寫'equals'和'hashCode'? –

+0

如果您複製粘貼整個代碼 –

回答

0

映射我已經更換此代碼:

public Account validateAccount(String nickname, String password){ 
Account acc = new Account(nickname,password); 
if (accounts.containsValue(acc)){ 
    acc.setNickname("true"); 
    acc.setPassword("true"); 
} 
return acc; 

}

利用該:

public Account validateAccount(String nickname, String password){ 
    Account acc = new Account(nickname,password); 
    Account a= new Account(); 
    if (accounts.containsKey(nickname)){ 
     a = accounts.get(nickname); 
     if(acc.getNickname().equals(a.getNickname()) && acc.getPassword().equals(a.getPassword())){ 
      acc.setNickname("true"); 
      acc.setPassword("true"); 
     } 
    } 
    return acc; 
} 

此固定我的問題。謝謝

相關問題