【问题标题】:StringBuffer Array to String Array - JavaStringBuffer 数组到字符串数组 - Java
【发布时间】:2012-05-20 03:13:57
【问题描述】:

我需要将 StringBuffer 数组转换为字符串数组进行排序。 Java中有什么方法吗?

下面是我的代码,我正在尝试按字母顺序对包含第一个字母为大写字母并忽略其他值的值(输入 1)进行排序。

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}");
    }
}

【问题讨论】:

  • 如果只需要排序,可以为StringBuffer编写自己的Comparator。
  • 请阅读FAQ: How To Ask,然后再提出下一个问题。在问题上投入一些精力会得到更好的答案。
  • 天哪,代码太乱了。你根本不需要StringBuffer。您只想根据这些字符串中的第一个大写字符对 字符串数组 进行排序!你想要你的输出为{"One", "Three", "foUr"}吗?
  • 没有。只有 {One, Three} 并忽略其他值..
  • 那么你真正需要的只是过滤而不是排序?

标签: java arrays string sorting stringbuffer


【解决方案1】:

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

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() 应用于每个元素,并返回结果字符串数组。

【讨论】:

  • 非常感谢。但我的字符串缓冲区数组最后包含空值,它显示 NullPointerException。
  • @SankarVaiyapuri - 对null 进行良好测试并处理它们。你知道如何编写 Java ......不是吗?
【解决方案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));

【讨论】:

    【解决方案3】:

    没有。没有可用于将一种类型的 Array 转换为另一种类型的 Array 的方法。您将需要遍历第一个 StringBuffers 数组,并将每个数组依次转换为相同大小的新数组中的字符串。

    【讨论】:

      【解决方案4】:

      怎么样:

      String[] str = new String[stringBufferArray.length];
      for (int i = 0; i < stringBufferArray.length; i++)
        str[i] = stringBufferArray[i].toString()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-18
        • 1970-01-01
        • 2018-08-10
        • 2012-04-20
        • 2011-10-04
        • 2014-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多