按值对 HashMap 进行排序
在 Java 中,HashMap 数据结构提供了一种便捷的方式来存储键值对。但是,如果您需要根据与键关联的值来访问数据,则需要按值对 HashMap 进行排序。
按升序对 HashMap 进行排序
按值对 HashMap 进行排序的一种方法是使用 Java 8 流。以下代码片段演示了如何按升序执行此操作:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in ascending order Map<Integer, String> sortedMapAsc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 2, abby // Key, Value : 5, daisy // Key, Value : 3, denver // Key, Value : 4, frost // Key, Value : 1, froyo System.out.println(sortedMapAsc); } }
按降序对 HashMap 进行排序
要按值降序对 HashMap 进行排序,稍微修改一下上面的代码片段:
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class SortHashMapByValues { public static void main(String[] args) { // Create an unsorted HashMap HashMap<Integer, String> unsortedMap = new HashMap<>(); unsortedMap.put(1, "froyo"); unsortedMap.put(2, "abby"); unsortedMap.put(3, "denver"); unsortedMap.put(4, "frost"); unsortedMap.put(5, "daisy"); // Sort the HashMap by values in descending order Map<Integer, String> sortedMapDesc = unsortedMap.entrySet() .stream() .sorted(Map.Entry.<Integer, String>comparingByValue().reversed()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new)); // Key, Value : 1, froyo // Key, Value : 4, frost // Key, Value : 3, denver // Key, Value : 5, daisy // Key, Value : 2, abby System.out.println(sortedMapDesc); } }
这段代码将输出排序后的 HashMap键表示按降序排序的原始键和值。升序和降序示例都使用 LinkedHashMap 来维护插入顺序,确保键与排序值正确关联。
以上是如何按值的升序和降序对 Java HashMap 进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!