java - 【算法】HashMap按照value排序
黄舟
黄舟 2017-04-18 10:52:16
0
3
791

阿里面试的时候面试官提出的一个问题:

给定一个HashMap<String, BuziObj> buziObjMap;,其中 BuziObj 实现了
Comparable 接口。现在需要将 buziObjMap 按照 BuziObj 有序输出。注意,BuziObj
实例有可能相等,要求多次返回的结果一致。可以使用JDK提供的各种API。

当时自己的想法是,将 buziObjMapvalues 放在一个 List 中。然后使用 Collections.sort(valuesList) 对存放 valuesvaluesList 排序。再遍历排序之后的 valuesListbuziObjMap,比对 valuesListbuziObjMap 中的值,相等之后,将当前 buziObjMap 中的 Entry 放在 LinkedHashMap 中,返回 LinkedHashMap 即可。

但是如上解法主要存在两个问题:
1,不满足多次执行返回结果一致这个要求,因为在遍历 valuesListbuziObjMap 时,buziObjMap的输出顺序无法保证每次都是一致的。
2,算法的复杂度过大。

针对这个问题,各位同学有什么更好的解法,麻烦提供一下思路。

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(3)
黄舟

リーリー

いいねを押す +0
Ty80

リストに値を入れる必要があるのはなぜですか? Entry を直接置くほうがずっと簡単ではないでしょうか?

いいねを押す +0
Peter_Zhu

通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜通り過ぎる〜

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート