Java HashMap的大小

Java HashMap的大小,java,map,hashmap,Java,Map,Hashmap,如何获得下面示例中的时间窗口数?目前它说有2个时间窗口,尽管有3个时间窗口,每个时间窗口由打开和关闭时间定义 Map<String, String> _timeWindows = new HashMap<String, String>(); _timeWindows.put("open", "123"); _timeWindows.put("close", "124"); _timeWindows.put("open", "523");

如何获得下面示例中的时间窗口数?目前它说有2个时间窗口,尽管有3个时间窗口,每个时间窗口由打开和关闭时间定义

    Map<String, String> _timeWindows = new HashMap<String, String>();
    _timeWindows.put("open", "123");
    _timeWindows.put("close", "124");
    _timeWindows.put("open", "523");
    _timeWindows.put("close", "524");
    _timeWindows.put("open", "823");
    _timeWindows.put("close", "824");

    System.out.println(_timeWindows.size());
Map\u timeWindows=newhashmap();
_时间窗口。放置(“打开”、“123”);
_时间窗口。放置(“关闭”、“124”);
_时间窗口。放置(“打开”、“523”);
_时间窗口。放置(“关闭”,“524”);
_时间窗口。放置(“打开”、“823”);
_时间窗口。放置(“关闭”、“824”);
System.out.println(_timeWindows.size());

键在HashMap中是唯一的。它将仅具有以下值:

_timeWindows.put("open", "823");
_timeWindows.put("close", "824");

所有地图中的关键点都是唯一的

如果要使用同一个键添加多个值。使用


输出:
timeWindows:{open=[123523823],close=[124524824]}

哈希映射包含唯一键。因此,当插入一个已经存在的新键时,它会覆盖其对应的值。因此,您的地图当前只有2个键值对

根据您的问题,我想您需要一个
窗口
类,类型为
enum
,值为String:

class Window {
    private String value;
    private WindowType type;

    enum WindowType {
        OPEN, CLOSED;
    }

    // constructor, getters.
}
然后根据您的要求维护一个
集合
列表


如果您的值表示时间,那么您应该真正将其存储为时间,而不是字符串。我建议使用

,因为在
Map
中键是唯一的,当您多次输入“打开”和“关闭”时,它只验证旧值,并保持相同的
。因此,正确地说,它只有两个元素具有
:“打开”、“关闭”。

,因为映射键就像一个集合。它不允许重复的valuesHow将MultiMap导入到类中?它是第三方jar。下载它
class Window {
    private String value;
    private WindowType type;

    enum WindowType {
        OPEN, CLOSED;
    }

    // constructor, getters.
}