有没有一种方法可以将Object []数组转换为char []数组?

时间:2020-02-09 05:46:54

标签: java arrays object

class Solution {
    char[] make(String s){
        Stack<Character> st= new Stack<Character>();
        for(char c:s.toCharArray()){
            if(c!='#'){
                st.push(c);
            }
            else if(!st.isEmpty()){
                st.pop();
            }
        }
        return (char [])(st.toArray());
    }
    public boolean backspaceCompare(String S, String T) {
        char[] ch1=make(S);
        char[] ch2=make(T);
        int i,j;
        if(ch1.length!=ch2.length)
            return false;
        else{
            for(i=0;i<ch1.length;i++){
                if(ch1[i]!=ch2[i]){
                    return false;
                }
            }
        }
        return true;
    }
}

上面的代码给出了一个错误: 不兼容的类型:Object []无法转换为char [] return(char [])(st.toArray());

我尝试使用Character []进行类型转换,但无法适当地将其转换为char []

java中是否有任何方法可以将仅包含字符的Object []转换为字符数组,即char [],以便我可以从make函数返回char []

2 个答案:

答案 0 :(得分:1)

好吧,如果需要的话,很容易编程:

Character[] refArray = (Character[]) st.toArray();
char[] charArray = new char[refArray.length];
for (int i = 0; i < refArray.length; i++) {
    charArray[i] = refArray[i];
}
return charArray;

请注意,可能更希望使用更指定的集合,这可能是围绕StringBuilder构建的集合或类似的集合(如果您有很多字符)。毕竟,每个字符都使用一个引用是很浪费的(但是,如今是计算机)。

答案 1 :(得分:0)

如果您仅使用Character,则可以使用toArray <T> T[] toArray(T[] a)替代

返回包含此Vector中所有元素的数组。 正确的顺序;返回数组的运行时类型是 指定的数组。

Character[] make(String s){
    Stack<Character> st = new Stack<Character>();
    //...
    return st.toArray(new Character[st.size()]);
}

public boolean backspaceCompare(String S, String T) {
    Character[] ch1 = make(S);
    Character[] ch2 = make(T);
    //...
}