Java 尝试使用数组构建stringBuffer

Java 尝试使用数组构建stringBuffer,java,arrays,stringbuffer,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

下面是我使用数组构建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));
    }

}
import java.util.ArrayList;
公共类StringBufferProj{
公共静态字符串appendItems(ArrayList列表){
StringBuffer b=新的StringBuffer();
for(inti=0;i(在Java中有更好的方法来实现这一点。但是,基于您的原始代码)
您可以使用从
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();
}
公共静态字符串appendItems(ArrayList列表){
StringBuffer b=新的StringBuffer();
对于(int i=0;i
首先,编程到
列表
界面,不要使用原始类型。此外,与
StringBuffer
相比,您更喜欢
StringBuilder
,并且可以对每个
循环使用

public static String appendItems(List<String> list) {
    StringBuilder b = new StringBuilder();
    for (String str : list) {
        b.append(str).append(" ");
    }
    return b.toString();
}
publicstaticstringappenditems(列表){
StringBuilder b=新的StringBuilder();
for(字符串str:list){
b、 追加(str)。追加(“”);
}
返回b.toString();
}
,在Java 8+中,具有类似流的

public static String appendItems(List<String> list) {
    return list.stream().collect(Collectors.joining(" "));
}
publicstaticstringappenditems(列表){
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));
}
publicstaticvoidmain(字符串[]args){
列表列表=新的ArrayList(Arrays.asList(“StringBuilder”)//
“执行”、“多个”、“线程”、“在”、“a”、“时间”);
系统输出打印项次(附件项(列表));
}

您的代码应该是这样的

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();
}
public static String appendItems(ArrayList<String> list) {
    StringBuffer buffer = new StringBuffer();
    for (String word : list) {
        buffer.append(word).append(" ");
    }

    return buffer.toString();
}
最后,由于Java8,您可以使用流和收集器

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

    return result;
    // or just 
    // return list.stream().collect(Collectors.joining(" "));
}
公共静态字符串appendItems(ArrayList列表){
字符串结果=list.stream().collect(collector.joining(“”);
返回结果;
//或者只是
//return list.stream().collect(Collectors.joining(“”);
}

需要帮助的问题是什么?List.toString()
有什么问题吗?然而,
List
(和
ArrayList
)有一个
.size()
方法,而不是
.length
。而
List(i)
很可能是类似于
List.get(i)
size()
而不是
length()