-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HashMap如何根据Key的自然排序输出?Value呢? #2
Comments
第一种方式,使用stream流。其实很乱的代码。 import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
public class HashX {
public static void main(String[] args) {
Map<String,String> map = new HashMap(){{
put("2","b");
put("3","c");
put("1","a");
put("4","d");
}};
Map<String,String> linkedHashMap = new LinkedHashMap<>(map);
map.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
//.sorted() //java.util.HashMap$Node cannot be cast to java.lang.Comparable
.forEachOrdered(e->linkedHashMap.put(e.getKey(),e.getValue()));
for(Map.Entry<String, String> e : linkedHashMap.entrySet()){
System.out.println(e.getKey() + ", " + e.getValue());
}
}
} |
更简洁的思路,使用TreeMap转换一下即可。 import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
public class HashX {
public static void main(String[] args) {
Map<String,String> map = new HashMap(){{
put("2","b");
put("3","c");
put("1","a");
put("4","d");
}};
Map<String,String> treeMap = new TreeMap(map);
for(Map.Entry<String, String> e : treeMap.entrySet()){
System.out.println(e.getKey() + ", " + e.getValue());
}
}
} |
使用list等结构缓存。
|
根据value排序更有意思一些,可以直接使用lambda的sorted方法 import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
public class HashX {
public static void main(String[] args) {
Map<String, String> map = new HashMap() {{
put("2", "b");
put("3", "c");
put("1", "a");
put("4", "d");
put("5", null);
}};
map.entrySet().stream().sorted((o1, o2) -> {
if (Objects.isNull(o1.getValue())) {
return -1;
}
return o1.getValue().compareTo(o2.getValue());
}).forEach(e -> System.out.println(e.getKey() + ", " + e.getValue()));
}
} |
茴香豆的n种写法,但假如你一种都不会,那问题才算大。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
问题:HashMap如何根据Key的自然排序输出?Value呢?
意图:是否能够灵活应用Java的API。如果这道题都答不出来,那面试可想而知。
在平常的面试中,我发现,确实有很大一部分同学答不上来。这是缺乏实践经验和联想能力,只能说sorry了
The text was updated successfully, but these errors were encountered: