[英]How to update Java HashTable?
我有兩個哈希表和一個LinkedList順序如下:
Hashtable<Character, Hashtable<String, LinkedList<String>>> hashTab = new Hashtable();
Hashtable<String, LinkedList<String>> string_list = new Hashtable();
LinkedList<String> data_list = new LinkedList();
現在我有一個函數,通過它我可以在哈希表和鏈表中傳遞值
public String createPlayerAccount(String FirstName, String LastName, int Age, String Username, String Password, String IPAddress)
{
char username_first_char = Username.charAt(0);
try
{
boolean username_exists = hashTab.get(username_first_char).containsKey(Username);
if(!username_exists)
{
String data_string = FirstName + " " + LastName + " " + Age + " " + Password + " " + IPAddress + playerStatus; //Pass user details to a string
data_list.add(data_string); //Add user details to the linked list
string_list.put(Username, data_list);
hashTab.put(username_first_char, string_list);
return("Dear " + FirstName + ", You have successfully registered");
}
else
{
return("Username already exists");
}
}
catch(Exception e)
{
String data_string = FirstName + " " + LastName + " " + Age + " " + Password + " " + IPAddress +" "+ playerStatus; //Pass user details to a string
data_list.add(data_string); //Add user details to the linked list
string_list.put(Username, data_list);
hashTab.put(username_first_char, string_list);
return("Username successfully added \n ");
}
}
默認情況下,playerStatus設置為0。 現在,我正在為Signin()創建另一個函數,在該函數中我希望將playerStatus的值更新為1。我該怎么辦?
登入():
public String playerSignIn(String Username, String Password, String IPAddress)
{
char username_first_char = Username.charAt(0);
try
{
String user_profile;
boolean username_exists = hashTab.get(username_first_char).containsKey(Username);
if(username_exists)
{
playerStatus = "1";
//String data_string = Password + " " + IPAddress +" "+ playerStatus; //Pass user details to a string
//data_list.add(data_string); //Add user details to the linked list
//string_list.put(Username, data_list);
//hashTab.put(username_first_char, string_list); //Add user details to the linked list
//return();
//hashTab.put(username_first_char, string_list);
//user_profile = hashTab.get(username_first_char).get(Username).get(0);
return(user_profile);
/*String data_string = Username + " " + Password + " " + IPAddress +" "+ "1"; //Pass user details to a string
data_list.add(data_string); //Add user details to the linked list
string_list.put(Username, data_list);
hashTab.put(username_first_char, string_list);
String get_user_data = hashTab.get(username_first_char).get(Username).get(0);
String[] user_record = get_user_data.split(" ");
String users_status = user_record[5];*/
//return("User status updated: " + user_record[5]);
}
else
{
return("Invalid username or password");
}
}
catch(Exception e)
{
return("PAWNED");
}
}
注意:這是代碼的服務器端。 我正在制作一個客戶端-服務器分布式系統。
如評論中所述,您需要創建一個POJO(對象類),該POJO將保存有關給定玩家的信息。 我要給那個班級球員命名。 如果您需要一個包含有關播放器信息的字符串,以便發送給客戶端,只需在Player類上使用toString()方法即可。
當我開發多人游戲時,通常在服務器端使用ConcurrentHashMap來存儲信息。 如果您正在使用的消息傳遞系統需要哈希表,那么您將對同步感到頭疼,如果您不知道自己在做什么,則可能導致死鎖。
開始重構代碼。 使用Player類之后,代碼應更具可讀性,並且應該能夠發現其他POJO也可能有用的地方。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.