我有一个
HashMap<String, Integer>.
Run Code Online (Sandbox Code Playgroud)
我想将所有键,即字符串提取到一个String数组中.然后,我想对这个String数组进行排序并使用它.
不幸的是,String数组没有排序并产生我想要的输出.
目前的输出是 -
one,
two,
zero,
Run Code Online (Sandbox Code Playgroud)
需要的输出是 -
zero,
one,
two,
Run Code Online (Sandbox Code Playgroud)
代码如下 -
import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;
public class HashMapKeySorter {
public static String[] convert(HashMap<String, Integer> codes){
Set set = codes.keySet();
Object[] object = set.toArray();
String[] allKeys = new String[object.length];
for(int i = 0; i < object.length; i++){
allKeys[i] = (String) object[i];
}
Arrays.sort(allKeys);
return allKeys;
}
public static void main(String[]args){
HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("zero", 0);
hm.put("one", 1);
hm.put("two", 2);
String[] allKeys = convert(hm);
showStringArray(allKeys);
}
public static void showStringArray(String[] allKeys){
for(int i = 0; i < allKeys.length; i++){
System.out.println(allKeys[i] + ", ");
}
}
}
Run Code Online (Sandbox Code Playgroud)
gpe*_*che 10
你接近错了.你想要的是:
1)entrySet()从中获取Map.
2)按条目对条目进行排序 value
3)打印key每个已排序的条目
你的程序做的是key按字母顺序排序.它做得很好.
你需要一个自定义比较器:
Arrays.sort(allKeys, new Comparator<String>()
{
@Override
public int compare(String o1, String o2)
{
// the implementation of the comparator
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |