Java 检查属于 TreeMap 的 LinkedList 的最后一个元素
Java checking last element of LinkedList that is part of a TreeMap
我有一个 Java 程序,它从文本文件中读取用户名和密码历史记录并将信息存储在 TreeMap 中。然后允许用户通过选择用户名然后输入他们当前的密码来更改密码。用户信息初始化为:
TreeMap<String,LinkedList<String>> userInfo = new TreeMap<String,LinkedList<String>>();
LinkedList 在此 while 循环中填充:
while (filescan.hasNext()) {
String toParse = filescan.nextLine();
String[] parsed = toParse.split(" ");
username = parsed[0];
LinkedList<String> oldpws = new LinkedList<String>();
for (int i = 1; i < parsed.length; i++) {
oldpws.add(parsed[i]);
}
userInfo.put(username, oldpws);
}
我 运行 稍后遇到的问题是,将用户输入的密码与与给定键相关的 LinkedList 的最后一个元素进行比较。我不能使用 contains(currPW)
,因为对于无效密码可以 return 为真。
if (/*last index of key's LinkedList*/.equals(currPW) {
//...
}
如何才能访问作为 TreeMap 一部分的 LinkedList 的最后一个索引?
你可以像这样得到最后一个元素。
final LinkedList<String> passwords = userInfo.get(username);
final String currentPassword = passwords.getLast();
然后像这样比较它们。
if(currPW.equals(currentPassword) {
// Login
}
部分答案已经指向正确答案。但是假设您有两个输入字符串,其中包含您要验证的用户的用户名和密码:
if (userInfo.contains(username)){
if(userInfo.get(username).getLast().equals(password){
return true;
} else {
//Bad password
return false;
}
}
//Unknown user
return false;
我有一个 Java 程序,它从文本文件中读取用户名和密码历史记录并将信息存储在 TreeMap 中。然后允许用户通过选择用户名然后输入他们当前的密码来更改密码。用户信息初始化为:
TreeMap<String,LinkedList<String>> userInfo = new TreeMap<String,LinkedList<String>>();
LinkedList 在此 while 循环中填充:
while (filescan.hasNext()) {
String toParse = filescan.nextLine();
String[] parsed = toParse.split(" ");
username = parsed[0];
LinkedList<String> oldpws = new LinkedList<String>();
for (int i = 1; i < parsed.length; i++) {
oldpws.add(parsed[i]);
}
userInfo.put(username, oldpws);
}
我 运行 稍后遇到的问题是,将用户输入的密码与与给定键相关的 LinkedList 的最后一个元素进行比较。我不能使用 contains(currPW)
,因为对于无效密码可以 return 为真。
if (/*last index of key's LinkedList*/.equals(currPW) {
//...
}
如何才能访问作为 TreeMap 一部分的 LinkedList 的最后一个索引?
你可以像这样得到最后一个元素。
final LinkedList<String> passwords = userInfo.get(username);
final String currentPassword = passwords.getLast();
然后像这样比较它们。
if(currPW.equals(currentPassword) {
// Login
}
部分答案已经指向正确答案。但是假设您有两个输入字符串,其中包含您要验证的用户的用户名和密码:
if (userInfo.contains(username)){
if(userInfo.get(username).getLast().equals(password){
return true;
} else {
//Bad password
return false;
}
}
//Unknown user
return false;