我创建了一个带有内部地图的地图作为测试,看起来外部地图将忽略其余的地图。我认为它会压倒他们。我还认为这是因为它们都是从 Map 扩展的,所以当它们不是时,它将它们视为同一个实例。
Map<Map<Integer, String>,String> maps=new HashMap<>();
maps.put(new HashMap<Integer, String>(),"HashMap");
maps.put(new TreeMap<Integer, String>(),"TreeMap");
maps.put(new LinkedHashMap<Integer, String>(),"LinkedHashMap");
maps.put(new Hashtable<Integer, String>(),"Hashtable");
Run Code Online (Sandbox Code Playgroud)
将地图打印到日志将仅显示最后添加的地图:
maps: {{}=Hashtable}
Run Code Online (Sandbox Code Playgroud)
我尝试了其他 Map 实现,除了 TreeMap 之外,所有实现都具有相同的行为,由于 HashMap 没有实现,它会抛出异常Comparable。
这是预期的行为吗?为什么 HashMap 会有这样的行为?