📜  在Java中按键对 LinkedHashMap 进行排序(1)

📅  最后修改于: 2023-12-03 15:23:24.469000             🧑  作者: Mango

在Java中按键对 LinkedHashMap 进行排序

在Java中,LinkedHashMap是一种实现了Map接口的散列表/链表数据结构,它保存插入的元素的顺序,并允许以插入顺序遍历元素。但是,如果要对元素按照键进行排序,我们可以通过一些简单的步骤实现。下面是如何在Java中按键对LinkedHashMap进行排序的方法。

步骤
  1. 创建LinkedHashMap并向其中添加元素。
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
map.put("a", 1);
map.put("c", 3);
map.put("b", 2);
  1. 将LinkedHashMap中的元素存储到List集合中。
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
  1. 对List集合进行排序。可以使用Collections.sort()方法排序。
Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
    @Override
    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
        return o1.getKey().compareTo(o2.getKey());
    }
});
  1. 将排好序的List集合中的元素重新存储到LinkedHashMap中。
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
for (Map.Entry<String, Integer> entry : list) {
    sortedMap.put(entry.getKey(), entry.getValue());
}
完整代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
        map.put("a", 1);
        map.put("c", 3);
        map.put("b", 2);

        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o1.getKey().compareTo(o2.getKey());
            }
        });

        LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
        for (Map.Entry<String, Integer> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

        System.out.println(sortedMap); // 输出为 {a=1, b=2, c=3}
    }
}
结论

通过上述步骤,我们可以将LinkedHashMap按照键(key)进行排序。在实际开发中,我们可能需要对LinkedHashMap按照值(value)进行排序,也可以通过类似的方法实现。