有一个 List数据集,通过循环想要要把分别把里面的 list.get(i)全部拼装成1个String 字段,每个值之间用“,”分开。请问怎么实现呀?

解决方案 »

  1.   

    用 StringBuilder.append
    for(String a : list){
     sb.append(a)
      

  2.   

    String 是不可变的,通常用StringBuffer来代替String
    StringBuffer sb = new StringBuffer();
    for(String a : list){
     sb.append(a);
      

  3.   

    String,StringBuffer与StringBuilder的区别
    可以看这个博客http://blog.csdn.net/rmn190/article/details/1492013
      

  4.   


            List list=(List)mParam.get("dh_list");
    String dh_seq_list="";
    for (int i=0; i<list.size(); i++)
    {
       Map mRow = (Map) list.get(i); //LIST 里面是XML传参过来的MAP对象
       dh_seq_list+=mRow.get("dh_seq")+",";
    }
            //下面去去掉最后一个“,”
    dh_seq_list=dh_seq_list.substring(0, dh_seq_list.toString().length()-1);
    执行是没什么问题。不知道这样写是不是合理
      

  5.   

    StringBuffer 和 StringBuilder 都可以实现
    都使用append方法进行字符串的连接
    常用的是StringBuffer
    StringBuffer sb = new StringBuffer();
    for(String a : list){
     sb.append(a);
     sb.append(",");
    }
    记得把最后的“,”去掉
      

  6.   

    这样写是没问题的。
    但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。
    记得有个贴子中有人这样比喻他们三个的区别
    String 是产品,StringBuffer和StringBuilder是流水线。
    StringBuilder 速度快,线程安全系数低
    StringBuffer 速度慢,线程安全系数高
      

  7.   

    没必要那么复杂的。说个简单的办法
    先看下源代码中的toString()方法
    public String toString() {
            Iterator<E> i = iterator();
    if (! i.hasNext())
        return "[]"; StringBuilder sb = new StringBuilder();
    sb.append('[');
    for (;;) {
        E e = i.next();
        sb.append(e == this ? "(this Collection)" : e);
        if (! i.hasNext())
    return sb.append(']').toString();
        sb.append(", ");
    }
        }
    你可以根据这个方法写你的需求,也可以直接用。
    直接用的方式。
    1、把你的List直接toString(),得到的结果就是多了前面和后面的一个[]
    2、用subString方法去掉最开始和最后面的[]
    多看源代码
      

  8.   

    源代码中之间分隔符是,和空格,如果中间不需要空格,可以自己仿照源代码中方法自己写一个。
    下面是根据源代码改的方法,已经测试。
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test {
    public static void main(String[] args) {
    ArrayList list = new ArrayList();
    list.add("a");
    list.add("b");
    list.add("c");
    System.out.println(myMethod(list));
    } public static String myMethod(List list) {
    Iterator i = list.iterator();
    if (!i.hasNext())
    return ""; StringBuilder sb = new StringBuilder();
    for (;;) {
    sb.append(i.next());
    if (!i.hasNext())
    return sb.toString();
    sb.append(",");
    }
    }}
      

  9.   

    用 StringBuilder.appendpublic String changeForList(List list){
    for(String a : list){
    sb.append(a)
    return sb.toString();
    }
      

  10.   

    用 StringBuilder.appendpublic String changeForList(List list){
    for(String a : list){
    sb.append(a).append(",")
    return sb.toString();
    }
      

  11.   

    import java.util.*;
    public class TestList
    {
    public static void main(String args[]){
    List<String> all = new ArrayList<String>();
    all.add("zhang");
    all.add("xin");
    all.add("jing");
    all.add("snake");
    StringBuffer buffer = new StringBuffer();
    for(int i=0;i<all.size();i++){
    if(i!=(all.size()-1)){
    buffer.append(all.get(i)).append(";");
    }else{
    buffer.append(all.get(i));
    }
    }
    System.out.println(buffer.toString());
    }
    }
      

  12.   

    这样写是没问题的。
    但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。
    记得有个贴子中有人这样比喻他们三个的区别
    String 是产品,StringBuffer和StringBuilder是流水线。
    StringBuilder 速度快,线程安全系数低
    StringBuffer 速度慢,线程安全系数高
    ++