有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在hashmap中迭代

我有一个hashmap,希望通过迭代获得键和值。我多次向oneList和oneMap添加条目。我只多次得到第一个“字符串变量”

Map<Integer, List<Object>> oneMap = new LinkedHashMap<Integer, List<Object>>();
List<Object> oneList = new LinkedList<Object>();

oneList.add("one");
oneList.add(FieldType);

oneMap.put("1", oneList);

//iterating through the map
for (Map.Entry<Integer,List<Object>> entry : oneMap.entrySet()) {
     System.out.println("Compare Key :: " +entry.getKey());
     oneList = entry.getValue();
     String oneSrvFld = (String) oneList.get(0);
     System.out.println("one srvFld :: " +oneSrvFld);
}

共 (3) 个答案

  1. # 1 楼答案

    多次获取第一个字符串的原因是,您只检索列表中的第一个字符串。从列表中获取数据的代码如下:

    String oneSrvFld = (String) oneList.get(0);
    

    这只获取列表中的第一项,忽略其余项。由于只有一个列表,因此只能看到一个字符串

    我不确定您想要实现什么,但可能的解决方案包括为地图中的每个条目创建一个新的列表,或者在您从地图中取出列表时迭代列表中的所有条目

  2. # 2 楼答案

    试试这个代码

        Map<Integer, List<Object>> oneMap = new LinkedHashMap<Integer, List<Object>>();
        List<Object> oneList = new LinkedList<Object>();
    
        oneList.add("one");
        oneList.add("FieldType");
    
        oneMap.put(1, oneList);
    
        //iterating through the map
        for (Map.Entry<Integer,List<Object>> entry : oneMap.entrySet()) {
             System.out.println("Compare Key :: " +entry.getKey());
             oneList = entry.getValue();
             for(int i=0;i<oneList.size();i++){
                 System.out.println("one srvFld :: " +oneList.get(i)); 
             }
    

    希望能有帮助

  3. # 3 楼答案

    我想您希望(String) oneList.get(0);将获得第一个元素并将其从列表中删除。但是get(index)在列表中的指定位置返回,而不删除元素