У меня есть два HashTables и один LinkedList того, как:Как обновить Java HashTable?
Hashtable<Character, Hashtable<String, LinkedList<String>>> hashTab = new Hashtable();
Hashtable<String, LinkedList<String>> string_list = new Hashtable();
LinkedList<String> data_list = new LinkedList();
Теперь у меня есть функция, через которую я передаю значения в хеш-таблицы и 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");
}
}
Примечание: Это стороне сервера кода. Я создаю распределенную систему клиент-сервер.
Зачем использовать 'Hashtable' вместо' HashMap' или 'ConcurrentHashMap'? –
Если этот «hashTab» предназначен для какого-то ускорения: удалите его. Это не обязательно. Я также предполагаю, что вам действительно не нужен «data_list». Если вам это нужно, объясните, почему. Но самое главное: не помешайте всю эту информацию (FirstName, LastName, Age, Password, IPAddress и playerStatus) в String! Вместо этого создайте класс, обобщающий эту информацию. Тогда обновление playerStatus станет тривиальным, так или иначе – Marco13
Мне нужно добавить потоки, которые не отражают итераций в реальном времени, но каким-либо образом, какими могут быть решения для этого? –