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;