StringBuffer数组到字符串数组 - Java

San*_*r V -2 java arrays sorting string stringbuffer

我需要将StringBuffer数组转换为String数组进行排序.Java中有任何方法吗?

下面是我的代码,我试图按字母顺序对值(input1)进行排序,其中包含第一个字母为UpperCase并忽略其他值.

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}");
    }
}
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 7

我认为没有内置方法.但是,编写一个很容易:

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;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想编写通用方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

这将获取任何对象数组,适用toString()于每个元素,并返回生成的字符串数组.

  • @SankarVaiyapuri - 对"null"进行测试并处理它们.你知道怎么写Java ......不是吗? (5认同)