java - 正确填充 map 中的列表

标签 java arraylist

我有一个映射,其值是整数列表。如果在阅读器中找到 key ,我必须将一个整数添加到列表中。我下面的代码适用于除一次之外的每次。换句话说,如果键存在 5 次,列表会说它只有 4 次。我缺少什么?谢谢!

Map<String, List<Integer>> map = new TreeMap<String, List<Integer>>();
String key; // the string from my reader

if (map.containsKey(key)) {
    map.get(key).add(value); //value being an integer gotten earlier
}

我的代码在构造函数中将键添加到 map 中,如下所示:

while (reader.ready()) {
    key = reader.readLine();
    if(!key.isEmpty()) {
        map.put(key, new ArrayList<Integer>());
    }
}    

如果找不到 key ,我不需要执行任何操作,只需在找到 key 时添加值即可。

最佳答案

您发布的代码片段不是实际的完整代码,但无论如何,您需要有逻辑来处理第一次看到 key 时的情况。在第一种情况下,您应该初始化要存储在映射中的整数列表。像这样的事情:

public static void addValue(String key, Integer value,
    Map<String, List<Integer>> map) {
    List<Integer> list = map.get(key);
    if (list == null) {
        list = new ArrayList<>();
    }
    list.add(value);
}

public static void main(String[] args) {
    Map<String, List<Integer>> map = new TreeMap<String, List<Integer>>();
    String key; // the string from my reader
    Integer value;
    addValue(key, value, map);
}

关于java - 正确填充 map 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43433593/

相关文章:

java - 使用 JAXB 不显示元素

java - 为什么这段java代码没有返回任何输出?

java - CMS 垃圾收集日志中的 "Full GC Before GC"是什么意思?

java - 创建仅包含指定像素的 ArrayList

java - 在 lambda foreach 表达式 java 8 中获取索引

java - 如何获取代理类的名称?

java - 想要执行某些操作以在 ListView 中单击的项目中查看

java - JTable在arrayList中显示数据

java - 使用 for 循环填充 ArrayList

java - 在Hbase中存储列表数据?