在java中反向多图

时间:2013-03-19 07:56:27

标签: java multimap

我有一个多图,我用hasnext()迭代它。

Set keySet = myMap.keySet();    

Iterator keyIterator = keySet.iterator();    

while (keyIterator.hasNext() ) {    

    Integer key = (Integer) keyIterator.next();    

    System.out.println("K"+key);    

    List values = (List) myMap.get(key);    

    System.out.println("V"+values);    

}       

输出是:

K = 4,

V = [Sam India],

K = 3,

V = [Sam,Sam US],

K = 5,

V = [Sam]

但我需要反向格式的输出,如:

K = 5,

V = [Sam],

K = 3,

V = [Sam,Sam US],

K = 4,

V = [Sam India]

我们可以在multimap中使用hasPrevious()吗?

2 个答案:

答案 0 :(得分:1)

你真的应该开始使用泛型。

最简单的黑客可能是使用

ArrayList<List<?>> list = new ArrayList<>(keySet);
ListIterator<List<?>> iter = list.listIterator(list.size() - 1);

然后向后迭代。但是,这将序列化该集合,因此它是O(n)额外的内存。

答案 1 :(得分:0)

其中一个选项是获取地图的大小,并从最后一个索引开始以相反的顺序检索记录。你想只使用Iterator吗?或者,您可以编写自定义迭代器以获得所需的功能。