Ana*_*and 1 java sorting arraylist hashmap
我有一个HashMap键是字符串.我需要获取密钥并根据密钥大小(即字符串长度)对其进行排序,然后将其存储在某些密钥中ArrayList.
注意:如果两个键大小相同,那么我们可以按任何顺序放置它.
例如.
hm.put("abc","hi");
hm.put("A","hi");
hm.put("ab","hi");
hm.put("a","hi");
Run Code Online (Sandbox Code Playgroud)
我的ArrayList应该按顺序包含元素abc,ab,a,A.
有人能告诉我什么是最好的方法.
您可以使用以下自定义按长度对键进行排序Comparator:
List<String> s = new ArrayList<>(hm.keySet());
Collections.sort(s, new Comparator<String>(){
@Override
public int compare(String s1, String s2){
return Integer.compare(s2.length(), s1.length());
}
});
Run Code Online (Sandbox Code Playgroud)
TreeSet这里使用提供Comparator其构造函数的自定义.
TreeSet<String> ts = new TreeSet<>(new Comparator<String>(){
@Override
public int compare(String s1, String s2){
int cmp = Integer.compare(s2.length(), s1.length());
return cmp != 0 ? cmp : s1.compareTo(s2);
}
});
ts.addAll(hm.keySet());
Run Code Online (Sandbox Code Playgroud)
请注意,如果Strings你比较的长度是相同的,你必须比较它们的字典顺序,否则它只TreeSet包含Strings具有不同长度的那些(即"a"或"A"不会是添加到集)
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |