-2

並べ替えのためにStringBuffer配列をStringArrayに変換する必要があります。Javaにメソッドはありますか?

以下は私のコードであり、UpperCaseとして最初の文字を含み、他の値を無視して、値(input1)をアルファベット順にソートしようとしています。

import java.util.*;
public class IPLMatch
{
    public static void main(String args[])
    {

        int input1 = 4;
        String input2[] = {"One","two","Three","foUr"}, output[];
        StringBuffer[] temp = new StringBuffer[input1];
        int j = 0, k = 0;
        for(int i = 0; i < input1; i++)
        {
            boolean isUpperCase = Character.isUpperCase(input2[i].charAt(0));
            if(isUpperCase)
            {
                temp[j++] = new StringBuffer(input2[i]);
            }
        }
                //I need convert my stringbuffer array (temp) to String array for sorting
        Arrays.sort(temp); 
        System.out.print("{");
        for(int i = 0; i < temp.length; i++)
        {
            System.out.print( temp[i]+ ",");
        }
        System.out.print("\b}");
    }
}
4

4 に答える 4

8

組み込みのメソッドはないと思います。ただし、次のように書くのは簡単です。

public static String[] toStringArr(StringBuffer sb[]) {
    if (sb == null) return null;
    String str[] = new String[sb.length];
    for (int i = 0; i < sb.length; i++) {
        if (sb[i] != null) {
            str[i] = sb[i].toString();
        }
    }
    return str;
}

または、ジェネリックメソッドを記述したい場合:

public static<T> String[] toStringArr(T arr[]) {
    if (arr == null) return null;
    String ret[] = new String[arr.length];
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] != null) {
            ret[i] = arr[i].toString();
        }
    }
    return ret;
}

これは、オブジェクトの任意の配列を受け取り、toString()すべての要素に適用され、結果の文字列の配列を返します。

于 2012-05-11T13:57:43.567 に答える
2
final String[] temp = {"One","two","Three","foUr"};
final List<String> out = new ArrayList<String>();
for (String s : temp) if (Character.isUpperCase(s.charAt(0))) out.add(s);
final String[] outAry = out.toArray(new String[out.size()]);
Arrays.sort(outAry);
System.out.println(Arrays.toString(outAry));
于 2012-05-11T16:02:28.593 に答える
0

いいえ。あるタイプの配列を別のタイプの配列に変換するために使用できる方法はありません。StringBufferの最初の配列を反復処理し、それぞれを同じサイズの新しい配列の文字列に順番に変換する必要があります。

于 2012-05-11T13:58:35.843 に答える
0

どうですか:

String[] str = new String[stringBufferArray.length];
for (int i = 0; i < stringBufferArray.length; i++)
  str[i] = stringBufferArray[i].toString()
于 2012-05-11T13:58:48.903 に答える