【问题标题】:how to remove the first 2 key-pairs in hasmap如何删除 hashmap 中的前 2 个密钥对
【发布时间】:2022-12-07 15:43:42
【问题描述】:

我要求用户输入 2 个密钥对

for (int j = 0; j < 2; j++) {
        System.out.print("Enter student ID " + (j + 1) + ": ");
        id = sc.next();
        System.out.print("Enter student name " + (j + 1) + ": ");
        name = sc.next();
        studentList.put(id, name);
    }

然后我删除了用户输入的最后一对

studentList.remove(id);

我要求另一对并将其添加到哈希图中

System.out.println("Enter username: ");
    username = sc.next();
    System.out.println("Enter password: ");
    password = sc.next();
    studentList.put(username, password);

现在,我想再次向用户询问另外 3 对

for (int y = 0; y < 3; y++) {
        System.out.print("Enter username " + (y + 1) + ": ");
        username = sc.next();
        System.out.print("Enter password " + (y + 1) + ": ");
        password = sc.next();
        studentList.put(username, password);
    }

但是现在,我想删除用户放置的前 2 个。

【问题讨论】:

  • 请求的逻辑不适用于 hashmap 结构
  • 您可能想要 LinkedHashMap 或类似的:HashMap 本质上是无序的,因此您输入的值可能不会以相同的顺序出现。
  • 您可以将前两个 ID 保留为两个变量,以便您可以在需要时通过 ID 删除这些条目(这个想法的变体是可以想象的)。
  • 但我想专门删除哈希图的前 2 个 ID
  • 没有“前两个”:如果您将键 6364 添加到哈希映射,然后添加 65,您可能会惊讶于哈希映射的顺序可能是 64, 65, 63。这是无序的,没有与插入顺序一致的“前两个”概念。

标签: java hashmap java.util.scanner


【解决方案1】:

您可以使用接口 SortedMap 或 NavigableMap 删除前两个键对, 但是你可以用 HashMap 来做,因为它不保存顺序

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 2013-02-19
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多