2.类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。
3.如果对同一个键多次赋值,后面的值将覆盖前面的值。
4.只有对同一个对象的引用,Map 结构才将其视为同一个键。Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题。
5.如果 Map 的键是一个简单类型的值(数字、字符串、布尔值),则只要两个值严格相等,Map 将其视为一个键.
你可以在放入键值对的时候增加一个统计Map容量的方法,就是在你往Map放入的时候,同时更新一个累加变量,增加的值就是本次加入的大小。也可以直接继承一个Map的子类,然后重写其put方法达到监听的目的。
另外,键值数据类型是否必要?可以使用内存占用更短的类型。
你可以使用JProfiler来分析下你的程序的内存、cpu占用情况,更好的优化程序……
没有长度限制。map可以根据新增的key-value动态的伸缩,因此它不存在固定长度或者最大限制,但是也可以选择标明map的初始容量cap。
map是无序的,每次打印出来的map都会不一样。