首页 > 解决方案 > 如何删除依赖于 for 循环内用户输入的 Map 键?

问题描述

我对 Java 还很陌生,我刚开始学习 HashMap。students我的问题是:如果我的 Map 中的一个键位于 for 循环中并且它取决于用户输入,我该如何删除它?为了更容易可视化,请参阅下面的代码:

import java.util.Map;
import java.util.HashMap;
import java.util.Scanner;

public class StudentList {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        Map<String, String> students = new HashMap<>();
        
        for (int i = 1; i <=3; i++) {
            System.out.println("Enter student number " + i + ": ");
            String stud_num = scan.nextLine();
            System.out.println("Enter name " + i + ": ");
            String name = scan.nextLine();
            students.put(stud_num, name);
            //I want to remove a key here using students.remove(key)
        }
        
        for (Map.Entry e : students.entrySet()){
            System.out.println(e.getKey() + ": " + e.getValue());
        }
    }
}

标签: javahashmapjava.util.scanner

解决方案


对于hasmap,要删除一个项目,请使用以下(我相信你已经知道了)

students.remove(Data);

对于您的 for 循环,您当然是根据用户的输入来确定是否要添加(或删除)项目。您需要让系统知道您是否要删除(或只是添加)。正常的做法是添加“Remove:[Data]”,当系统检测到用户输入中有“Remove:”时,会从地图中删除“Data”。

所以在你的for循环中,请改变

students.put(stud_num, name);

if name.contains("Remove:") {
String removestring = name.replace("Remove:","");
students.remove(removestring);
}
else {
students.put(stud_num, name);
}

为了让用户知道如何使用它,请将您的输入提示从“输入名称”更改为“输入名称(或输入[删除:名称]删除)”


推荐阅读