我想根据其键值plz对地图进行排序,请参阅下面的代码
public static void main(String[] args) {
SortedMap map = new TreeMap();
// Add some elements:
map.put("2", "Two");
map.put("1", "One");
map.put("5", "Five");
map.put("4", "Four");
map.put("3", "Three");
map.put("10", "Ten");
map.put("12", "Twelve");
map.put("7", "Seven");
map.put("9", "Nine");
Iterator iterator = map.keySet().iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
System.out.println("key : " + key + " value :" + map.get(key));
}
}
Result Should come below
key : 1 value :One
key : 2 value :Two
key : 3 value :Three
key : 4 …Run Code Online (Sandbox Code Playgroud) 我试图以HashMap两种方式排序.默认方式:按字母顺序排列,第二种方式:按键数字,数字越高,位于顶部.我已经四处寻找,但找不到任何关于这个主题的内容,我发现的内容也不起作用.如果不能对它们进行排序(我希望顶部有最高键的人,随着人们拥有较低的键而减少,则按字母顺序对所有其余键进行排序(将0作为键的人).
这是我到目前为止所尝试的:
private HashMap<String, Integer> userGains = new HashMap<String, Integer>();
public void sortGains(int skill, int user) {
userGains.put(users.get(user).getUsername(), users.get(user).getGainedExperience(skill));
HashMap<String, Integer> map = sortHashMap(userGains);
for (int i = 0; i < map.size(); i++) {
Application.getTrackerOutput().getOutputArea(skill).append(users.get(user).getUsername() + " gained " + map.get(users.get(user).getUsername()) + " experience in " + getSkillName(skill) + ".\n");
}
}
public LinkedHashMap<String, Integer> sortHashMap(HashMap<String, Integer> passedMap) {
List<String> mapKeys = new ArrayList<String>(passedMap.keySet());
List<Integer> mapValues = new ArrayList<Integer>(passedMap.values());
LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<String, Integer>();
Collections.sort(mapValues);
Collections.sort(mapKeys); …Run Code Online (Sandbox Code Playgroud) 我的数组列表值如下所示
[
{
Distance=Distance: 16.6km,
branch_desc=name 1,
},
{
Distance=Distance: 5.4km,
branch_desc=name 2,
},
{
Distance=Distance: 13.4km,
branch_desc=name 3,
}
]
Run Code Online (Sandbox Code Playgroud)
如何对数组列表进行升序和降序排序与距离进行比较.我不知道如何对数组列表进行排序.任何人都知道请帮我解决这个问题.
我试图通过执行这个循环来获取TreeMap的前10个元素:
TreeMap<Integer, Integer> sortedMap = sortMap(m);
String outString = "";
int count = 10;
while (count > 0) {
count--;
Integer k = sortedMap.firstKey();
outString += String.valueOf(k);
sortedMap.remove(k);
if (count != 0) {
outString += ",";
}
}
System.out.println("outVal is " + outVal);
Run Code Online (Sandbox Code Playgroud)
这打印outVal is 11377,11377,11377,11377,11377,11377,11377,11377,11377,11377
Integer工具Comparable,为什么可能remove不工作?
更新这是我的sortMap实施:
public static TreeMap<Integer, Integer> sortMap(HashMap<Integer, Integer> map) {
ValueComparator bvc = new ValueComparator(map);
TreeMap<Integer,Integer> sorted_map = new TreeMap<Integer,Integer>(bvc);
sorted_map.putAll(map);
return sorted_map;
}
class …Run Code Online (Sandbox Code Playgroud) 我有一个HashMap:
private Map<String,Integer> matchesWonByTeam= new HashMap<String,Integer>();
Run Code Online (Sandbox Code Playgroud)
使用集合和比较器的最简单和最简单的方法是什么?
Stream<Map.Entry<String, List<Object>>> sorted = index.entrySet().stream()
.sorted(Map.Entry.comparingByValue());
Run Code Online (Sandbox Code Playgroud)
sorted(Comparator<? super Map.Entry<String,List<NFArticle>>>)类型中的方法Stream<Map.Entry<String,List<NFArticle>>>不适用于参数(Comparator <Map.Entry<Object,Comparable<? super Comparable<? super V>>>>)
我想Hashmap根据size()列表中的值来排序HashMap.如何使用Java 8中的Stream库实现此目的?
我正在尝试对字符串列表进行排序。字符串包含用户名和他们的杀戮。我想使用用户名和 - 之前的杀死数对列表进行排序。我已经阅读了 Comparator 并尝试了一些但没有任何运气。
public class Test {
public static List<String> TOP10_Players = new ArrayList<>();
public static void AddPlayers() {
// TOP10_Players.add("[Kills]-[Username]");
TOP10_Players.add("1-Username1");
TOP10_Players.add("2-Username2");
TOP10_Players.add("3-Username3");
SortList();
}
public static void SortList() {
// Code to sort list
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有值的字符串数组
List<String> list = new ArrayList<String>();
list = {'name1','10','name2','2','name3','15','name4','7'}
Run Code Online (Sandbox Code Playgroud)
我想对此列表进行排序,输出应该是
list = {'name3','15','name1','10','name4','7','name2','2'}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我知道这个问题已被多次询问和回答.但是几乎所有解决方案都具有O(n ^ 2)的计算复杂度.
我正在寻找O(n log n)复杂度的解决方案.有人可以建议吗?
谢谢堆,Chaitanya
我正在使用此问题的解决方案对a中的String值进行排序LinkedHashMap.然而,排序根本不起作用.这是我写的代码.
Map<Integer, String> sortedMap = myMap.entrySet().stream()
.sorted(Map.Entry.comparingByValue())
.collect(Collectors.toMap(Map.Entry<Integer, String>::getKey,
Map.Entry<Integer, String>::getValue));
myMap = new LinkedHashMap<Integer, String>(sortedMap);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,Integer当使用两者comparingByValue和comparingByKey方法时,它正在对键进行排序.所以它肯定是排序,而不是String值,但在两种情况下都是Integer键.我不明白我在这里做错了什么.
java ×10
sorting ×6
collections ×3
hashmap ×3
arrays ×2
java-8 ×2
android ×1
arraylist ×1
bukkit ×1
comparator ×1
dictionary ×1
java-stream ×1
list ×1