2012-07-16 60 views
1

我有一种情况,其中有一个HashMap作为使用Integer作为键和ArrayList排序hashmap

Map<Integer,ArrayList> key = new HashMap<Integer,ArrayList>();

数组列表有[rankOfCard,suitOfCard]

我想这个地图在这样一种方式,如果该值是

(1,[3,1]) 
(2,[2,4]) 
(3,[1,3]) 
(4,[1,2]) 
(5,[2,3]) 

输出应该是排序:

(4,[1,2]) 
(3,[1,3]) 
(5,[2,3]) 
(2,[2,4]) 
(1,[3,1]) 

我怎样才能做到这一点?

+4

看起来你正在使用一个ArrayList,当像Card这样的类会更好。 HashMap是一个未排序的地图,我怀疑你不需要对它进行排序,而是希望以特定的顺序显示它们。 – 2012-07-16 12:50:55

+0

正是我写的东西:)在Java中,你不用一个'List'来建模元组。 – 2012-07-16 12:51:40

+0

@PeterLawrey我明白你要求我使用包含Rank和suit属性的职业卡。我对吗 ? – Meenakshi 2012-07-16 13:06:39

回答

0

这个答案是不正确 - 请无视

+0

实际上,排序OP需要的正是“ArrayList”的自然顺序。这表明您提出的方法存在缺陷。 – 2012-07-16 13:01:59

+0

OP希望按值排序,而不是按键排序。由于SortedMap自然按键排序,比较器*将是必需的。 – Dancrumb 2012-07-16 14:21:58

+0

现在你明白我的意思了......你有什么样的'Comparator',因为它的'compare'方法会接收两个**值来进行比较? – 2012-07-16 14:44:54

0

一个Map没有排序,所以它不是你的任务正确的数据结构。 A SortedMap,所以它也不好,因为你想你的地图排序

你的问题不明确Map的关键是什么,但也许你可以在常规List使用自定义类,并有类实现Comparable接口,或者实现外部Comparator,到List排序。

相关问题