我需要将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}");
}
}
答案 0 :(得分: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;
}
或者,如果您想编写通用方法:
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()
应用于每个元素,并返回生成的字符串数组。
答案 1 :(得分: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));
答案 2 :(得分:0)
没有。没有可用于将一种类型的数组转换为另一种类型的数组的方法。您将需要遍历第一个StringBuffers数组,并将每个String依次转换为相同大小的新数组中的String。
答案 3 :(得分:0)
怎么样:
String[] str = new String[stringBufferArray.length];
for (int i = 0; i < stringBufferArray.length; i++)
str[i] = stringBufferArray[i].toString()