Java 从n个元素的列表中构建一个包含x个元素的StringBuffer数组

Java 从n个元素的列表中构建一个包含x个元素的StringBuffer数组,java,arrays,Java,Arrays,我有一个初始列表,包含:1,2,3,4,5,6,7 我想创建一个StringBuffer数组,每个元素只包含3个项作为StringBuffer(String): 最初,我解决了以下示例中的问题,但我不想使用其他列表来解决此问题: List accounts = new ArrayList(); List<Person> listOfObjects = results.getResults(); for(Person p: listOfObjects) { String pers

我有一个初始列表,包含:1,2,3,4,5,6,7 我想创建一个StringBuffer数组,每个元素只包含3个项作为StringBuffer(String):

最初,我解决了以下示例中的问题,但我不想使用其他列表来解决此问题:

List accounts = new ArrayList();
List<Person> listOfObjects = results.getResults();
for(Person p: listOfObjects) {
   String persAccount = p.getAccount();
   accounts.add(persAccount);
}
String s = listToString(accounts);

public String listToString(List list) {
 StringBuffer b = new StringBuffer();
    for (int i = 0; i < list.size(); i++) {
        b.append(String.valueOf(list.get(i)));
        if (i < list.size()-1)
            b.append(',').toString();
    }
    return b.toString();
}
List accounts=new ArrayList();
List listOfObjects=results.getResults();
for(个人p:对象列表){
字符串persAccount=p.getAccount();
账户。添加(个人账户);
}
字符串s=列表字符串(帐户);
公共字符串listToString(列表){
StringBuffer b=新的StringBuffer();
对于(int i=0;i
我认为一种有效的方法是创建一个StringBuffer并在for块中附加所有值。(3乘3)


如何高效地执行此操作?

这是一个简单的代码版本,其中没有创建中间列表。仅使用
StringBuilder
而不是
StringBuffer

   List<Person> personList = new ArrayList<>();

    personList.add(new Person(1));
    personList.add(new Person(2));
    personList.add(new Person(3));
    personList.add(new Person(4));
    personList.add(new Person(5));
    personList.add(new Person(6));
    personList.add(new Person(7));

    List<StringBuilder> stringBuilderList = new ArrayList<>();

    int numberOfIntegerPerStringBuilder = 3;

    int index = 0;
    StringBuilder stringBuilder = null;
    for (Person person : personList) {

        if (index % numberOfIntegerPerStringBuilder == 0) {
            stringBuilder = new StringBuilder();
            stringBuilderList.add(stringBuilder);
        }

        if (stringBuilder != null) {
            stringBuilder.append(person.getAccount());
            stringBuilder.append(",");
        }
        index++;
    }

    for (StringBuilder sb : stringBuilderList) {
        sb.deleteCharAt(sb.lastIndexOf(","));
        System.out.println(sb.toString());
    }
List personList=new ArrayList();
人员列表。添加(新人员(1));
人员列表。添加(新人员(2));
人员列表。添加(新人员(3));
人员列表。添加(新人员(4));
人员列表。添加(新人员(5));
人员列表。添加(新人员(6));
人员列表。添加(新人员(7));
List stringBuilderList=新建ArrayList();
int numberOfIntegerPerStringBuilder=3;
int指数=0;
StringBuilder StringBuilder=null;
for(个人:个人列表){
如果(索引%NumberOfIntegerStringBuilder==0){
stringBuilder=新的stringBuilder();
添加(stringBuilder);
}
如果(stringBuilder!=null){
追加(person.getAccount());
stringBuilder.append(“,”);
}
索引++;
}
for(StringBuilder sb:stringBuilderList){
sb.deleteCharAt(sb.lastIndexOf(“,”);
System.out.println(sb.toString());
}

这里应该问您的问题:Stackoverflow的本质是找到问题的解决方案,而不是改进有效的解决方案;)重写Person对象的toString方法以仅返回帐号如何?您可以传递原始列表并获得类似于
list.get(i).toString()
的结果,这正是我要寻找的。非常感谢。
   List<Person> personList = new ArrayList<>();

    personList.add(new Person(1));
    personList.add(new Person(2));
    personList.add(new Person(3));
    personList.add(new Person(4));
    personList.add(new Person(5));
    personList.add(new Person(6));
    personList.add(new Person(7));

    List<StringBuilder> stringBuilderList = new ArrayList<>();

    int numberOfIntegerPerStringBuilder = 3;

    int index = 0;
    StringBuilder stringBuilder = null;
    for (Person person : personList) {

        if (index % numberOfIntegerPerStringBuilder == 0) {
            stringBuilder = new StringBuilder();
            stringBuilderList.add(stringBuilder);
        }

        if (stringBuilder != null) {
            stringBuilder.append(person.getAccount());
            stringBuilder.append(",");
        }
        index++;
    }

    for (StringBuilder sb : stringBuilderList) {
        sb.deleteCharAt(sb.lastIndexOf(","));
        System.out.println(sb.toString());
    }