我正在尝试将meterId映射到具有该ID的MeterBlink列表。我主要在如何为HashMap.put()调用建立列表上感到困惑。代码如下:

Map<String, List<MeterBlink>> IdToMetersMap = new HashMap<>();
for (MeterBlink meterBlink : createData()) {
    List<MeterBlink> meterBlinkList = new ArrayList<>();
    meterBlinkList.add(meterBlink);
    String meterId = meterBlink.getMeterId();
    idToMetersMap.put(meterId, meterBlinkList)
}


我认为问题在于,每次迭代时我都会创建一个新列表,但不确定如何解决此问题。

最佳答案

我喜欢java8的答案,但是这里没有java8(没有lambda表达式):

Map<String, List<MeterBlink>> idToMetersMap = new HashMap<>();
for (MeterBlink meterBlink : createData()) {
    String meterId = meterBlink.getMeterId();
    List<MeterBlink> meterBlinkList = idToMetersMap.get(meterId);
    //if List doesn't exist create it and put in Map
    if (meterBlinkList == null) {
        meterBlinkList = new ArrayList<>();
        idToMetersMap.put(meterId, meterBlinksList)
    }
    meterBlinkList.add(meterBlink);
}

关于java - 通过将元素映射到元素集合来替换多图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31747409/

10-10 19:54