Java 从列表中读取信息并放入地图

Java 从列表中读取信息并放入地图,java,Java,我有下面的代码从两个列表中读取信息,并将其放入地图中。我有近500条记录,但我在地图上只看到75条记录。请说明我犯了什么错误:( private静态映射buildCache(){ for(MyStore myStores:myStoreList){//包含我拥有的所有商店的列表-有近600家商店。 for(HardwareInfo hardware:hardwareList){//包含这些存储的基础结构信息列表-这些列表只有共同的存储编号。 如果(myStores.getStoreNumber(

我有下面的代码从两个列表中读取信息,并将其放入地图中。我有近500条记录,但我在地图上只看到75条记录。请说明我犯了什么错误:(

private静态映射buildCache(){
for(MyStore myStores:myStoreList){//包含我拥有的所有商店的列表-有近600家商店。
for(HardwareInfo hardware:hardwareList){//包含这些存储的基础结构信息列表-这些列表只有共同的存储编号。
如果(myStores.getStoreNumber().equals(myStores.getStoreNumber()){
myCache.put(myStores,hardware.getHardwareInfo_East());//myCache是一个静态映射。
myCache.put(myStores,hardware.getHardwareInfo_West());
myCache.put(myStores,hardware.getHardwareInfo_South());
myCache.put(myStores,hardware.getHardwareInfo_North());
打破
}
}
}
对于(Map.Entry:myCache.entrySet())
{
System.out.println(“条目为:“+ENTRY.getKey()+”,值为:“+ENTRY.getValue()”);
}
返回myCache;
}
}

A
Map
将一个键映射为一个值。您多次重写该值

这个

if (myStores.getStoreNumber().equals(myStores.getStoreNumber())) {                      
    myCache.put(myStores,hardware.getHardwareInfo_North());
    break;
}
如果要合并所有列表,可以执行以下操作:

if (myStores.getStoreNumber().equals(myStores.getStoreNumber())) {                      
    myCache.put(myStores, new ArrayList<String>(hardware.getHardwareInfo_East())); //myCache is a static map.
    List<String> list = myCache.get(myStores);
    list.addAll(hardware.getHardwareInfo_West());
    list.addAll(hardware.getHardwareInfo_South());
    list.addAll(hardware.getHardwareInfo_North());
    break;
}
if(myStores.getStoreNumber().equals(myStores.getStoreNumber()){
myCache.put(myStores,newarraylist(hardware.getHardwareInfo_East());//myCache是一个静态映射。
List List=myCache.get(myStores);
list.addAll(hardware.getHardwareInfo_West());
list.addAll(hardware.getHardwareInfo_South());
list.addAll(hardware.getHardwareInfo_North());
打破
}

A
Map
将一个键映射为一个值。您多次重写该值

这个

if (myStores.getStoreNumber().equals(myStores.getStoreNumber())) {                      
    myCache.put(myStores,hardware.getHardwareInfo_North());
    break;
}
如果要合并所有列表,可以执行以下操作:

if (myStores.getStoreNumber().equals(myStores.getStoreNumber())) {                      
    myCache.put(myStores, new ArrayList<String>(hardware.getHardwareInfo_East())); //myCache is a static map.
    List<String> list = myCache.get(myStores);
    list.addAll(hardware.getHardwareInfo_West());
    list.addAll(hardware.getHardwareInfo_South());
    list.addAll(hardware.getHardwareInfo_North());
    break;
}
if(myStores.getStoreNumber().equals(myStores.getStoreNumber()){
myCache.put(myStores,newarraylist(hardware.getHardwareInfo_East());//myCache是一个静态映射。
List List=myCache.get(myStores);
list.addAll(hardware.getHardwareInfo_West());
list.addAll(hardware.getHardwareInfo_South());
list.addAll(hardware.getHardwareInfo_North());
打破
}

Heap可能是前进的方向……这是故意的吗?如果(myStores.getStoreNumber().equals(myStores.getStoreNumber())真的很抱歉-如果(myStores.getStoreNumber().equals(hardware.getStoreNumber()))。这只是我正在实现的一个框架。我无法在这里粘贴真正的代码,因此必须创建一些虚拟对象来说明我的观点:)堆可能是前进的方向…这是有意的吗?如果(myStores.getStoreNumber().equals(myStores.getStoreNumber())似乎没有意义,对不起,实际上是-if(myStores.getStoreNumber()).equals(hardware.getStoreNumber())。这只是我正在实现的一个框架。我无法在这里粘贴真正的代码,因此必须创建一些虚拟对象来说明我的观点:)谢谢jilordo。但是,在我的例子中,映射中的每个键都有多个值。像这样的东西-。因此,我试图将store number+所有其他标记了该store number的值放在地图中。但正如你所看到的,我并不成功:(如果你想为每个键存储多个值,你应该使用
MultiMap
,例如Guava提供的一个。如果我不使用MultiMap,解决方案是什么?@user2624866:我发布的解决方案。如上所述,
Map
只能将一个键映射到一个值。在这种情况下,该值是一个
列表,可以包含多个值。)ries。因此每个键都可以映射到一个
列表
,但不能映射到多个列表。谢谢jilordo。但是在我的情况下,映射中的每个键都有多个值。类似于-。因此,我尝试将存储编号+所有其他标记了该存储编号的值放入映射中。但正如您所看到的,我没有成功:(如果你想为每个键存储多个值,你应该使用
MultiMap
,例如Guava提供的一个。如果我不使用MultiMap,解决方案是什么?@user2624866:我发布的解决方案。如上所述,
Map
只能将一个键映射到一个值。在这种情况下,该值是一个
列表,可以包含多个值。)因此每个键可以映射到一个
列表
,但不能映射到多个列表。