我正在尝试使用Arrays.sort
函数对字符数组进行排序。我使用了以下代码:
class Solution {
public String customSortString(String S, String T) {
Map<Character, Integer> poses = new HashMap<>(S.length());
for(int i = 0 ; i < S.length() ; i++){
poses.put(S.charAt(i), i);
}
char[] tmpArr = T.toCharArray();
Arrays.sort(tmpArr , new Comparator<Character>(){
@Override
public int compare(Character c1, Character c2) {
Integer aPos = poses.get(c1);
Integer bPos = poses.get(c2);
if(aPos == null || bPos == null)
return 0;
return Integer.compare(aPos,bPos);
}
});
return new String(tmpArr);
}
}
但是我得到了这个错误:
Error:(14, 19) java: no suitable method found for sort(char[],<anonymous java.util.Comparator<java.lang.Character>>)
method java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>) is not applicable
(inference variable T has incompatible bounds
equality constraints: char
upper bounds: java.lang.Character,java.lang.Object)
method java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>) is not applicable
(cannot infer type-variable(s) T
(actual and formal argument lists differ in length))
我做错了什么?它看起来没有自动拆箱到字符。我怎么才能让它工作呢?
发布于 2019-06-02 23:45:41
char[] tmpArr = T.toCharArray();
这就是错误所在,你不能将premitives与comparator一起使用。您需要将其转换为Character[]
。
您可以使用Apache commons-lang执行以下操作:
char[] charArray = str.toCharArray();
Character[] tmpArr = ArrayUtils.toObject(charArray);
Here是一些很好的转换方法。
发布于 2019-06-02 23:50:48
已经存在char[]的排序方法,因此
Arrays.sort(tmpArr);
所以完整的流程是
char[] tmpArr = T.toCharArray();
Arrays.sort(tmpArr);
return new String(tmpArr);
https://stackoverflow.com/questions/56416452
复制相似问题