为了账号安全,请及时绑定邮箱和手机立即绑定

LinkedHashMap与LinkedHashMap或ArrayList的相反顺序

LinkedHashMap与LinkedHashMap或ArrayList的相反顺序

明月笑刀无情 2021-04-29 18:27:15
我有一个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);}
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

如果您的动机只是反转地图(以降序显示),则可以使用 Java.util.TreeMap.descendingMap(): 它返回地图中包含的映射的反转顺序视图。


LinkedHashMap<String,String> map = .... //this is your intial hashmap

TreeMap<String,String> tmap = new TreeMap<>(map);

map.clear();

map.putAll(tmap.descendingMap());


查看完整回答
反对 回复 2021-05-19
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

这是为您准备的我自己的书面逻辑。而不使用任何内置函数来反转:


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

    map.put("10/10/2010 10:10:10", "SomeText1");

    map.put("10/10/2019 10:10:19", "SomeText2");

    map.put("10/10/2020 10:10:20", "SomeText3");

    map.put("10/10/2021 10:10:21", "SomeText4");


    LinkedHashMap<String, String> reversed = new LinkedHashMap<>();


    String[] keys = map.keySet().toArray(new String[map.size()]);


    for (int i = keys.length - 1; i >= 0; i--) {

        reversed.put(keys[i], map.get(keys[i]));

    }


查看完整回答
反对 回复 2021-05-19
  • 3 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信