一,本章目标
掌握Map接口的输出操作
掌握Map接口中key类的定义标准
二,具体内容
但是,Map接口一般作为查找来使用,输出操作很少见。
使用Iterator输出:
使用foreach输出:
这两种输出形式实际上还是以Collection的形式输出,只是以Map.entry作为内容的操作类型。
在Map中,可以使用任意的类型作为key和walue,那么非系统的类也可以。
现在用String为key是可以正确地输出person的内容。现在把key和value的类型交换一下
此时,只是将自定义的类作为key,取值的时候取不了,返回结果是null,为什么?
匹配时的一个问题:只有对象完全一样才能查询出来。
这样不是解决问题的方法,因为不可能将Person的per对象到处带着走,应该像String一样,可以使用匿名对象的形式找到内容。
那么,就要按照与Set接口中判断重复元素的方式一样,进行方法的覆写。
作为Key,或者更准确来说作为对象的时候,实际上是依靠hashCode和equals方法来判断2个匿名对象是否相等,这一点由系统内容完成。
三,总结
Map可以使用迭代输出
map->entrySet->Set->Iterator->Map.Entry->Key和value
如果使用非系统类作为key,则一定要覆写equal和hashCode方法,负责无效。