尝试使用数组构建stringBuffer

时间:2017-04-18 21:19:44

标签: java arrays stringbuffer

这是我尝试使用数组构建stringBuffer。我该如何解决这个问题?

import java.util.ArrayList;
public class StringBufferProj {
public static String appendItems(ArrayList list){
    StringBuffer b = new StringBuffer();
    for (int i=0; i<list.length(); i++) {
        b.append(list(i));
        b.append(" ");
    }
    return b.toString();
    }

    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("StringBuilder ");
        list.add("executes ");
        list.add("multiple ");
        list.add("threads ");
        list.add("at ");
        list.add("a ");
        list.add("time ");
System.out.println(StringBufferProj.appendItems(list));
    }

}

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

首先,编程到List接口,不要使用原始类型。另外,更喜欢StringBuilderStringBuffer,您可以使用for-each循环。

public static String appendItems(List<String> list) {
    StringBuilder b = new StringBuilder();
    for (String str : list) {
        b.append(str).append(" ");
    }
    return b.toString();
}

,在Java 8+中,使用类似

的流
public static String appendItems(List<String> list) {
    return list.stream().collect(Collectors.joining(" "));
}

然后调用它,你可以使用

public static void main(String[] args) {
    List<String> list = new ArrayList<>(Arrays.asList("StringBuilder ", //
            "executes ", "multiple ", "threads ", "at ", "a ", "time "));
    System.out.println(appendItems(list));
}

答案 1 :(得分:0)

(有更好的方法在Java中执行此操作。但是,基于您的原始代码) 您使用get()ArrayList获取了一个元素。如果您还定义ArrayList的类型,那么您不需要投射类型,而且阅读更清晰:

public static String appendItems(ArrayList<String> list) {
    StringBuffer b = new StringBuffer();
    for (int i = 0; i < list.size(); i++) {
        b.append(list.get(i));
        b.append(" ");
    }
    return b.toString();
}

答案 2 :(得分:0)

您的代码应该是这样的

public static String appendItems(ArrayList<String> list) {
    StringBuffer b = new StringBuffer();
    for (int i = 0; i < list.size(); i++) {
        b.append(list.get(i));
        b.append(" ");
    }
    return b.toString();
}

变化是
1.方法签名 - 为列表ArrayList<String>的元素添加类型 2.在Java列表界面中,不包含length()方法,而是size()方法 3.要从列表中获取元素,您应该使用get方法 - list.get(i)

从Java 7开始,您可以使用增强型for循环。我会重构你的代码是这样的

public static String appendItems(ArrayList<String> list) {
    StringBuffer buffer = new StringBuffer();
    for (String word : list) {
        buffer.append(word).append(" ");
    }

    return buffer.toString();
}

最后,从Java 8开始,您可以使用流和收集器

public static String appendItems(ArrayList<String> list) {
    String result = list.stream().collect(Collectors.joining(" "));

    return result;
    // or just 
    // return list.stream().collect(Collectors.joining(" "));
}