在 Java 中使用 sort() 方法对一个 Map 进行排序
在 Java 中使用 sorted() 方法对 Map 进行排序
在 Java 中使用 Comparator 的 sort() 方法对 Map
使用 Java 中的 sorted() 和 toMap() 方法对一个 Map 进行排序
在 Java 中使用自定义代码对一个 Map 进行排序
本教程介绍了如何在 Java 中按值对 Map
有几种方法可以对 Map 进行排序。这里我们用到了 sort()、sorted() 方法和 Comparator 接口等。我们来看看例子。
在 Java 中使用 sort() 方法对一个 Map 进行排序
我们可以使用 List 接口的 sort() 方法对 Map 的元素进行排序。sort() 方法将元素按升序排序,我们通过 comparingByValue() 方法指定按值排序。请看下面的例子。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class SimpleTesting {
public static void main(String[] args) {
Map
map.put(2, 1020);
map.put(3, 300);
map.put(1, 100);
map.put(5, 500);
map.forEach((k, v) -> System.out.println(k + "=" + v));
System.out.println("After Sorting by value");
List
list.sort(Entry.comparingByValue());
list.forEach(System.out::println);
}
}
输出:
1=100
2=1020
3=300
5=500
After Sorting
1=100
3=300
5=500
2=1020
在 Java 中使用 sorted() 方法对 Map 进行排序
如果你正在使用流,你可以使用 sorted() 方法,按升序对元素进行排序。我们将 Map.Entry.comparingByValue() 作为参数传递给 sorted() 方法,以按值对 Map
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;
public class SimpleTesting {
public static void main(String[] args) {
Map
map.put(2, 1020);
map.put(3, 300);
map.put(1, 100);
map.put(5, 500);
map.forEach((k, v) -> System.out.println(k + "=" + v));
System.out.println("After Sorting by value");
Stream
map.entrySet().stream().sorted(Map.Entry.comparingByValue());
sorted.forEach(System.out::println);
}
}
输出:
1=100
2=1020
3=300
5=500
After Sorting by value
1=100
3=300
5=500
2=1020
在 Java 中使用 Comparator 的 sort() 方法对 Map
在这个例子中,我们使用 compareTo() 方法来比较 sort() 方法内部的 Map
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public class SimpleTesting {
public static void main(String[] args) {
Map
map.put(2, 1020);
map.put(3, 300);
map.put(1, 100);
map.put(5, 500);
map.forEach((k, v) -> System.out.println(k + "=" + v));
System.out.println("After Sorting by value");
List
Collections.sort(list, new Comparator
@SuppressWarnings("unchecked")
public int compare(Object o1, Object o2) {
return ((Comparable
.compareTo(((Map.Entry
}
});
Map
for (Iterator
Map.Entry
result.put(entry.getKey(), entry.getValue());
}
result.forEach((k, v) -> System.out.println(k + "=" + v));
}
}
输出:
1=100
2=1020
3=300
5=500
After Sorting by value
1=100
3=300
5=500
2=1020
使用 Java 中的 sorted() 和 toMap() 方法对一个 Map 进行排序
在这个例子中,我们使用 sorted() 方法对 Map
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
public class SimpleTesting {
public static void main(String[] args) {
Map
map.put(2, 1020);
map.put(3, 300);
map.put(1, 100);
map.put(5, 500);
map.forEach((k, v) -> System.out.println(k + "=" + v));
System.out.println("After Sorting by value");
Map
.stream()
.sorted(Entry.comparingByValue())
.collect(Collectors.toMap(Entry::getKey, Entry::getValue,
(e1, e2) -> e1, LinkedHashMap::new));
result.forEach((k, v) -> System.out.println(k + "=" + v));
}
}
输出:
1=100
2=1020
3=300
5=500
After Sorting by value
1=100
3=300
5=500
2=1020
在 Java 中使用自定义代码对一个 Map 进行排序
在这里,我们创建了一个实现 Comparator 接口的用户自定义类,并将其对象传递给 TreeMap,以获得按值排序的 Map
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
class UserComparator implements Comparator
Map
public UserComparator(Map
this.map = map;
}
public int compare(Object o1, Object o2) {
if (map.get(o2) == map.get(o1))
return 1;
else
return ((Integer) map.get(o1)).compareTo((Integer) map.get(o2));
}
}
public class SimpleTesting {
public static void main(String[] args) {
Map
map.put(2, 1020);
map.put(3, 300);
map.put(1, 100);
map.put(5, 500);
map.forEach((k, v) -> System.out.println(k + "=" + v));
System.out.println("After Sorting by value");
UserComparator comparator = new UserComparator(map);
Map
result.putAll(map);
result.forEach((k, v) -> System.out.println(k + "=" + v));
}
}
输出:
1=100
2=1020
3=300
5=500
After Sorting by value
1=100
3=300
5=500
2=1020
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Copyright © 2022 流光追月·网游特刊 All Rights Reserved.