这段代码不起作用的原因是什么?

时间:2013-12-03 07:04:35

标签: java

我有一个这样的课程:

public class StringCheckLHMapSorted<K, V>
    extends
    ObjectLHMapSorted<K, V> {

我在LinkedHashMap里面声明如下:

private final Map<Integer, StringCheck> scoLHMap =
        (Map<Integer, StringCheck>) new LinkedHashMap<K, V>();

StringCheck类具有此属性及其各自的setter / getter,而其他内容则没有:

private boolean check;
private String string;

我在这个问题顶部描述的类中创建了一个方法,如下所示:

public LinkedHashMap<Boolean, String> getSCLHAllStringAndCheckInside() {
LinkedHashMap<Boolean, String> allStrCh = new LinkedHashMap<Boolean, String>();

for (Map.Entry<Integer, StringCheck> e : scoLHMap.entrySet()) {
        allStrCh.put(e.getValue().isCheck(), e.getValue().getString());
}

    return allStrCh;
}

返回allStrCh的对象只给我一个条目;插入的最后一个更具体。我用一个ArrayList替换了allStrCh,只获取了键/值,它给出了每个键的完整列表;键/值。

为什么会这样?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

LinkedHashMap只保留插入的顺序 - 如果你.put(true,x)然后.put(true,y)它仍会覆盖之前真正键的任何内容。

你可能想做这样的事情? HashMap with multiple values under the same key