java - 将所有值映射到一个键

标签 java maps

      Map<Object,String> mp=new HashMap<Object, String>();
      Scanner sc=new Scanner(System.in);
      System.out.println("Enter the instrument name");
      String name=sc.next();


        mp.put(name, "Control Valve");
        mp.put(name, "BDV");
        mp.put(name, "SDV");
        mp.put(name, "ON-OFF VALVE");
        mp.put(name,"Analyser");


        Set s=mp.entrySet();

        Iterator it=s.iterator();

        while(it.hasNext())
        {

            Map.Entry m =(Map.Entry)it.next();

            String key=(String)m.getKey();

            String value=(String)m.getValue();

            System.out.println("Instrument name :"+key+"  fields:"+value);
        }
    }
}

在此,只有最后一个值被映射到键。即分析器到键。

如何将所有值映射到用户输入的一个键。并且还必须要求用户为每个值字段输入值。

更新的代码 -:它询问仪器名称,但随后显示异常“java.util.ArrayList 无法转换为 java.lang.String”

 Map<String,List<String>> mp=new HashMap<String,List<String>>();
      Scanner sc=new Scanner(System.in);
      System.out.println("Enter the instrument name");
      String name=sc.next();
      List<String> valList = new ArrayList<String>();
      valList.add("Control Valve");
      valList.add("BDV");
      valList.add("SDV");
      valList.add("ON-OFF VALVE");
      valList.add("Analyser");
      mp.put(name, valList);




        Set s=mp.entrySet();

        Iterator it=s.iterator();

        while(it.hasNext())
        {

            Map.Entry m =(Map.Entry)it.next();

            String key=(String)m.getKey();

            String value=(String)m.getValue();

            System.out.println("Instrument name :"+key+" fields:"+value);
        }
    }
}

最佳答案

我建议使用

Map<Object,List<String>> mp=new HashMap<Object, List<String>>();

这样您就可以维护给定键的值集。

如果给定 key 有可用的列表,则获取该列表并将新值添加到列表中。

已更新

Map<String,List<String>> mp=new HashMap<String,List<String>>();
      Scanner sc=new Scanner(System.in);
      System.out.println("Enter the instrument name");
      String name=sc.next();
      List<String> valList = new ArrayList<String>();
      valList.add("Control Valve");
      valList.add("BDV");
      valList.add("SDV");
      valList.add("ON-OFF VALVE");
      valList.add("Analyser");
      mp.put(name,valList);

      for(String key : mp.keySet()){
          System.out.print("Instrument name :"+key+" Values : ");
          for(String val : mp.get(key)){
              System.out.print(val+",");
          }


      }

关于java - 将所有值映射到一个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263400/

相关文章:

java - Android - 在抽屉导航的Fragment中调用RecyclerView

java - 循环遍历n张 map

android - 使用 MyLocationOverlay 绘制精度圆

javascript - JavaScript 中的对象覆盖键值对

javascript - 如何将函数的结果添加到另一个函数并使用 java 在 DIV ID html 中显示

java - 使用 GluonHQ map 和 JavaFX 在 MapLayer 上绘制点不起作用

java - 如何将计算卸载到 virtualbox 中的 openstack(通过 devstack)安装?

java - 使用数组显示用户输入的值

java - 从位于异步任务 doInBackGround 中的回调返回一个值

java - 什么时候应该在连接池中实例化数据源