Arrays.sort在char数组自定义排序出现意外
Posted 秦枫-_-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arrays.sort在char数组自定义排序出现意外相关的知识,希望对你有一定的参考价值。
今天在写代码时,遇到了一个意外,对char数组自定义排序过程中,报错,按照Arrays.sort()写法我应该没写错
class Solution {
public String frequencySort(String s) {
HashMap<Character,Integer> map=new HashMap<>();
for(int i=0;i<s.length();i++){
map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0)+1);
}
char []an=s.toCharArray();
Collections.sort(an,new Comparator<Character>(){
@Override
public int compare(Character a,Character b){
return map.get(b)-map.get(a);
}
});
StringBuffer res=new StringBuffer();
for(int i=0;i<an.length();i++){
res.append(an[i]);
}
return res.toString();
}
}
然后就报了一个错误:
后来网上发现有人跟我一样,也遇到了这个错误
原因如下:
我的解决思路:
把char数组换成列表List
class Solution {
public String frequencySort(String s) {
HashMap<Character,Integer> map=new HashMap<>();
for(int i=0;i<s.length();i++){
map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0)+1);
}
List<Character> an=new ArrayList<>(map.keySet());
Collections.sort(an,new Comparator<Character>(){
@Override
public int compare(Character a,Character b){
return map.get(b)-map.get(a);
}
});
StringBuffer res=new StringBuffer();
for(int i=0;i<an.size();i++){
for(int j=0;j<map.get(an.get(i));j++)
res.append(an.get(i));
}
return res.toString();
}
}
以上是关于Arrays.sort在char数组自定义排序出现意外的主要内容,如果未能解决你的问题,请参考以下文章
集合-Java中Arrays.sort()自定义数组的升序和降序排序
Java:使用sort方法对整个数组或部分数组进行排序的问题