当前位置: 首页 > 面试题库 >

如何在Java中以相反的顺序迭代hashmap

葛驰
2023-03-14
问题内容

我尝试了一个小时,但没有找到任何最佳方法来实现反向的哈希图迭代,这就是我拥有的哈希图。

      Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();

             for(Integer key : map.keySet()) {
                List<String> value = map.get(key);
                List<Map<String,?>> security = new LinkedList<Map<String,?>>();  
                for(int ixy = 0; ixy < value.size()-1; ixy++){
                    security.add(createItem(value.get(ixy), value.get(ixy+1))); 
                }
                adapter.addSection(Integer.toString(key), new SimpleAdapter(getApplicationContext(), security, R.layout.list_complex, new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption }));  
            }

我也看过TreeMap的例子,

             Map<Integer, List<String>> sortedMap = new TreeMap<Integer, List<String>>(map);

但是treemap也按升序给出,我想要的是降序。


问题答案:

Hashmap没有特定的顺序。但是您可以使用TreeMap。

也许这个简单的例子可以帮助您:

Map<Integer, String> map = new TreeMap<Integer, String>();
        map.put(1, "abc1");
        map.put(2, "abc2");
        map.put(3, "abc3");

        ArrayList<Integer> keys = new ArrayList<Integer>(map.keySet());
        for(int i=keys.size()-1; i>=0;i--){
            System.out.println(map.get(keys.get(i)));
        }


 类似资料:
  • 问题内容: 是否有一种从列表(特别是数组列表,但没关系)中获取有序流的合理方法,该方法以与原始列表相反的方式流元素? 我正在寻找一种不涉及在任何东西(收集器,另一个列表,数组等)中缓冲数据的解决方案,因为它们会复制浪费的容器或使用(因为它会修改列表)。 到目前为止,我在这里看到的最干净的方法是实现自己的版本,并以相反的方式遍历列表,或者实现以反向方式进行迭代并在其上使用。 请注意,此问题与Java

  • 我将感谢任何帮助,我是一个初学者,因为你可能会告诉。提前谢谢大家! 我可以用递归来做这个,但我想学习弄清楚这个方法。

  • 问题内容: 我有一个LinkedHashMap: 我需要从给定键的位置向后迭代。因此,如果为我提供了第十个项目的密钥,则需要向后迭代哈希表9、8、7等。 问题答案: 您不必遍历它。但是拔下钥匙并将其存储在列表中会很方便。这就是执行indexOf()类型操作的唯一方法。

  • 对于以下地图: 这是代码。。。 ...保证两次打印相同的序列? 如果没有,在例如< code>java.util.HashMap中是否有任何保证?

  • 问题内容: 我需要一个Map,它可以 按其值 的降序进行迭代。是否有像Apache Commons或Guava这样的标准库提供这种地图? 问题答案: 我会用番石榴来做到这一点,如下所示:

  • 问题内容: 我有一个HashMap,每次我获得迭代器时,我都希望以不同的随机顺序迭代它们的键值对。从概念上讲,我想在调用迭代器之前对地图进行“混洗”(或者,如果需要,可以对迭代器进行“混洗”)。 我有两种选择: 1)使用LinkedHashMap的方法,并在内部保留条目列表,将其随机洗净,并在调用迭代器时返回该视图。 2)使用map.entrySet(),构造一个ArrayList并在其上使用sh