LinkedHashMap与LinkedHashMap或ArrayList的相反顺序

我有一个LinkedHashMap<String,String>看起来像这样的东西(真的不知道如何说明HashMap):


{

  "10/10/2010 10:10:10" => "SomeText1",

  "10/10/2019 10:10:19" => "SomeText2",

  "10/10/2020 10:10:20" => "SomeText3",

  "10/10/2021 10:10:21" => "SomeText4"

}

我想这样说:


{

  "10/10/2021 10:10:21" => "SomeText4",

  "10/10/2020 10:10:20" => "SomeText3",

  "10/10/2019 10:10:19" => "SomeText2",

  "10/10/2010 10:10:10" => "SomeText1"

}

我写了这个解决方案是可行的,因为我想要的结果是一个ArrayList,但是我在考虑是否存在一种更简单的方法来反转LinkedHashMap ,例如使用诸如sort之类的工具来保持相同的类型。


private LinkedHashMap<String, String> map = new LinkedHashMap<>();

int sizeOfHashMap = map.size();

ArrayList reversedHashToArrayList = new ArrayList(map.size());

   for (Map.Entry<String,String> entry : map.entrySet()) {

   String key = entry.getKey();

   String value = entry.getValue();


   reversedHashToArrayList.add(0,entry);

}


明月笑刀无情
浏览 201回答 3
3回答

慕村225694

如果您的动机只是反转地图(以降序显示),则可以使用 Java.util.TreeMap.descendingMap(): 它返回地图中包含的映射的反转顺序视图。LinkedHashMap<String,String> map = .... //this is your intial hashmapTreeMap<String,String> tmap = new TreeMap<>(map);map.clear();map.putAll(tmap.descendingMap());

慕哥6287543

这是为您准备的我自己的书面逻辑。而不使用任何内置函数来反转:&nbsp;LinkedHashMap<String, String> map = new LinkedHashMap<>();&nbsp; &nbsp; map.put("10/10/2010 10:10:10", "SomeText1");&nbsp; &nbsp; map.put("10/10/2019 10:10:19", "SomeText2");&nbsp; &nbsp; map.put("10/10/2020 10:10:20", "SomeText3");&nbsp; &nbsp; map.put("10/10/2021 10:10:21", "SomeText4");&nbsp; &nbsp; LinkedHashMap<String, String> reversed = new LinkedHashMap<>();&nbsp; &nbsp; String[] keys = map.keySet().toArray(new String[map.size()]);&nbsp; &nbsp; for (int i = keys.length - 1; i >= 0; i--) {&nbsp; &nbsp; &nbsp; &nbsp; reversed.put(keys[i], map.get(keys[i]));&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java