gpt4 book ai didi

java - 如何更新Java HashTable?

转载 作者:行者123 更新时间:2023-12-01 13:32:14 26 4
gpt4 key购买 nike

我有两个哈希表和一个链接列表,顺序如下:

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(对象类)来保存有关给定玩家的信息。我将该类命名为 Player。如果您需要一个包含玩家信息的字符串,以便发送到客户端,只需在 Player 类上使用 toString() 方法即可。

当我开发多人游戏时,在服务器端我通常使用 ConcurrentHashMap 来存储信息。如果您使用的消息传递系统需要哈希表,那么您将会遇到同步问题,如果您不知道自己在做什么,这可能会导致死锁。

开始重构您的代码。使用 Player 类后,代码应该更具可读性,并且您应该能够发现另一个 POJO 也可能有用的地方。

关于java - 如何更新Java HashTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com