阿里面试的时候面试官提出的一个问题:
给定一个
HashMap
,其中buziObjMap; BuziObj
实现了Comparable
接口。现在需要将buziObjMap
按照BuziObj
有序输出。注意,BuziObj
实例有可能相等,要求多次返回的结果一致。可以使用JDK提供的各种API。
当时自己的想法是,将buziObjMap
的values
放在一个List
中。然后使用Collections.sort(valuesList)
对存放values
的valuesList
排序。再遍历排序之后的valuesList
和buziObjMap
,比对valuesList
与buziObjMap
中的值,相等之后,将当前buziObjMap
中的Entry
放在LinkedHashMap
中,返回LinkedHashMap
即可。
但是如上解法主要存在两个问题:
1,不满足多次执行返回结果一致这个要求,因为在遍历valuesList
与buziObjMap
时,buziObjMap
的输出顺序无法保证每次都是一致的。
2,算法的复杂度过大。
针对这个问题,各位同学有什么更好的解法,麻烦提供一下思路。
为什么要把Values放到List里呢?直接放Entry不就简单很多了吗。
路过~路过~路过~路过~路过~路过~路过~路过~路过~