一个String拼装问题 有一个 List数据集,通过循环想要要把分别把里面的 list.get(i)全部拼装成1个String 字段,每个值之间用“,”分开。请问怎么实现呀? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用 StringBuilder.appendfor(String a : list){ sb.append(a) String 是不可变的,通常用StringBuffer来代替StringStringBuffer sb = new StringBuffer();for(String a : list){ sb.append(a); String,StringBuffer与StringBuilder的区别可以看这个博客http://blog.csdn.net/rmn190/article/details/1492013 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);执行是没什么问题。不知道这样写是不是合理 StringBuffer 和 StringBuilder 都可以实现都使用append方法进行字符串的连接常用的是StringBufferStringBuffer sb = new StringBuffer();for(String a : list){ sb.append(a); sb.append(",");}记得把最后的“,”去掉 这样写是没问题的。但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。记得有个贴子中有人这样比喻他们三个的区别String 是产品,StringBuffer和StringBuilder是流水线。StringBuilder 速度快,线程安全系数低StringBuffer 速度慢,线程安全系数高 没必要那么复杂的。说个简单的办法先看下源代码中的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方法去掉最开始和最后面的[]多看源代码 源代码中之间分隔符是,和空格,如果中间不需要空格,可以自己仿照源代码中方法自己写一个。下面是根据源代码改的方法,已经测试。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(","); } }} 用 StringBuilder.appendpublic String changeForList(List list){for(String a : list){sb.append(a)return sb.toString();} 用 StringBuilder.appendpublic String changeForList(List list){for(String a : list){sb.append(a).append(",")return sb.toString();} 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()); }} 这样写是没问题的。但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。记得有个贴子中有人这样比喻他们三个的区别String 是产品,StringBuffer和StringBuilder是流水线。StringBuilder 速度快,线程安全系数低StringBuffer 速度慢,线程安全系数高++ Q求用JAVA 做删数问题 求解DBCP数据库连接池的问题 请用一个数学公式实现自然数的转换 我真的是无能为力了,自己做了一个星期一点进步都没有,希望各位大侠能帮一下小弟 java日期验证 tonic look and feel中文显示问题 如何将Application转换成Applet. 散分 请问安装jdk时的private jre与public jre是怎么回事? java编程思想中的源代码中的makefile文件能作批处理吗? 今天看视频的第一个项目 各种各样的Exception啊 求解 关于短信猫 SMSLIB JAVA 二次开发遇到的问题。
for(String a : list){
sb.append(a)
StringBuffer sb = new StringBuffer();
for(String a : list){
sb.append(a);
可以看这个博客http://blog.csdn.net/rmn190/article/details/1492013
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);
执行是没什么问题。不知道这样写是不是合理
都使用append方法进行字符串的连接
常用的是StringBuffer
StringBuffer sb = new StringBuffer();
for(String a : list){
sb.append(a);
sb.append(",");
}
记得把最后的“,”去掉
但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。
记得有个贴子中有人这样比喻他们三个的区别
String 是产品,StringBuffer和StringBuilder是流水线。
StringBuilder 速度快,线程安全系数低
StringBuffer 速度慢,线程安全系数高
先看下源代码中的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方法去掉最开始和最后面的[]
多看源代码
下面是根据源代码改的方法,已经测试。
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(",");
}
}}
for(String a : list){
sb.append(a)
return sb.toString();
}
for(String a : list){
sb.append(a).append(",")
return sb.toString();
}
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());
}
}
但效率是有区别的,String是不变量,每次拼接都要从新创建对象,而StringBuilder和StringBuffer却是可变的,所以不需要从建。
记得有个贴子中有人这样比喻他们三个的区别
String 是产品,StringBuffer和StringBuilder是流水线。
StringBuilder 速度快,线程安全系数低
StringBuffer 速度慢,线程安全系数高
++