首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Arrays.sort对字符数组进行排序

使用Arrays.sort对字符数组进行排序
EN

Stack Overflow用户
提问于 2019-06-02 23:31:55
回答 2查看 2.6K关注 0票数 1

我正在尝试使用Arrays.sort函数对字符数组进行排序。我使用了以下代码:

代码语言:javascript
复制
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);

    }
}

但是我得到了这个错误:

代码语言:javascript
复制
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))

我做错了什么?它看起来没有自动拆箱到字符。我怎么才能让它工作呢?

EN

回答 2

Stack Overflow用户

发布于 2019-06-02 23:45:41

代码语言:javascript
复制
char[] tmpArr = T.toCharArray();

这就是错误所在,你不能将premitives与comparator一起使用。您需要将其转换为Character[]

您可以使用Apache commons-lang执行以下操作:

代码语言:javascript
复制
char[] charArray = str.toCharArray();
Character[] tmpArr = ArrayUtils.toObject(charArray);

Here是一些很好的转换方法。

票数 2
EN

Stack Overflow用户

发布于 2019-06-02 23:50:48

已经存在char[]的排序方法,因此

代码语言:javascript
复制
 Arrays.sort(tmpArr);

所以完整的流程是

代码语言:javascript
复制
char[] tmpArr = T.toCharArray();
Arrays.sort(tmpArr);
return new String(tmpArr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56416452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档