一个把List<String>转化为以","隔开的字符串的方法
自由者 发布于 2010年12月15日 12时, 23评/70861阅
分享到:
.
收藏 +11
踩 顶 1
一个把List转化为以","隔开的字符串的方法,JDK5中通过测试
其实这只是一个可以举一反三的例子:
List可以换成类似数据结构的类型
泛型String也可以改成其它类型
分割字符","也可以通过参数传进来
...
方法的实现再稍作修改即可
标签: List 字符串
代码片段(2) [全屏查看所有代码]
1. [代码][Java]代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.ArrayList;
import java.util.List;
/**
* 集合操作
* @author intrl
* @date 2010-12-15
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(listToString(list));//aaa,bbb,ccc
}
public static String listToString(List<String> stringList){
if (stringList==null) {
return null;
}
StringBuilder result=new StringBuilder();
boolean flag=false;
for (String string : stringList) {
if (flag) {
result.append(",");
}else {
flag=true;
}
result.append(string);
}
return result.toString();
}
}
2. [代码][Java]代码
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.util.ArrayList;
import java.util.List;
/**
*
* @author intrl
* @date 2010-12-23
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>();
list.add(new Person("张三", 15));
list.add(new Person("李四", 12));
list.add(new Person("王五", 10));
// 打印年龄不小于12岁的人员
System.out.println(listToString(list, 12, "&"));// 张三&李四
}
/**
* 获取年龄>=age的人员信息
*
* @param list
* @param age
* @return
*/
public static String listToString(List<Person> list, int age, String sep) {
if (list == null) {
return null;
}
StringBuilder result = new StringBuilder();
boolean flag = false;
for (Person person : list) {
if (person.getAge() < age) {
continue;
}
if (flag) {
result.append(sep==null?"":sep);
} else {
flag = true;
}
result.append(person.toString());
}
return result.toString();
}
}
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
if (name == null) {
name = "";
}
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getName();
}
}
举报
开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»
相关的代码(50)
10回/50161阅 [Java] Java基础:数组Array转成List的几种方法 7年前 By 绿悠悠
7回/17721阅 [Java] Java 比较两个 List 的值是否相等 6年前 By 鉴客
0回/13237阅 [其他] Lua实现的常用string库 7年前 By apache
3回/12452阅 [PHP] PHP中文字符串截取函数 7年前 By 疯狂的流浪
2回/11636阅 [JavaScript] 将JSON转换成HTML列表显示 6年前 By gurdy
2回/7732阅 [Java] 常用java字符串操作函数(转) 7年前 By 小编辑
6回/7497阅 [Java] 统计文本中某个字符串出现的次数 6年前 By jingshishengxu
0回/5668阅 [Scala] Scala字符串处理常用函数 6年前 By 曾建凯
1回/4746阅 [Java] 字符串转十六进制字符串,解决中文乱码问题 6年前 By fuhao715
12回/4189阅 [Java] OSChina 的一个工具类 MyListUtils 7年前 By 红薯
显示所有 »
发表评论 回到顶部 网友评论(23)
1楼:laserdance 发表于 2010-12-15 13:29 回复此评论
Object[] test= new Object[] {
"javaeye", new Object[] {},
"wenth", new Object[] {},
"laserdance", new Object[] { "wenth" },
"javaeye", new Object[] { "wenth", "laserdance"} };
System.out.println(java.util.Arrays.deepToString(test));
这个方法不知道符合你的要求么
2楼:programtic 发表于 2010-12-15 14:47 回复此评论
apache 的common包下面的StringUtils工具类提供了:
Open DeclarationString org.apache.commons.lang.StringUtils.join(Collection collection, String separator)
3楼:programtic 发表于 2010-12-15 14:47 回复此评论
我这里没得源码,可以看看他们的实现方式。
4楼:programtic 发表于 2010-12-15 16:21 回复此评论
开始没仔细看楼主的代码,刚看了下,好简洁。
5楼:匿名网友 发表于 2010-12-15 17:29 回复此评论
List<String> list = new ArrayList<String>();
.....
String str = Arrays.toString(list);
System.out.println(str.substring(1, str.length()-1));
6楼:老腊肉 发表于 2010-12-15 20:12 回复此评论
这代码太垃圾了
为什么不
int length = arr.length ;
StringBuffer buf = new StringBuffer("");
if(length > 0){
buf.append(arr[0]);
}
for(int i = 1 ; i < length ; i++){
buf.append(',');
buf.append(arr[i]);
}
7楼:jakic 发表于 2010-12-15 20:39 回复此评论
就是
8楼:programtic 发表于 2010-12-16 00:35 回复此评论
apache common包下的StringUtils的join方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static String join(Iterator iterator, String separator) {
// handle null, zero and one elements before building a buffer
if (iterator == null) {
return null;
}
if (!iterator.hasNext()) {
return EMPTY;
}
Object first = iterator.next();
if (!iterator.hasNext()) {
return ObjectUtils.toString(first);
}
// two or more elements
StringBuffer buf = new StringBuffer(256); // Java default is 16, probably too small
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
if (separator != null) {
buf.append(separator);
}
Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
9楼:programtic 发表于 2010-12-16 00:37 回复此评论
思路貌似和 “覃正平”的差不多。
10楼:自由者 发表于 2010-12-16 12:46 回复此评论
引用来自“覃正平”的评论
这代码太垃圾了
为什么不
int length = arr.length ;
StringBuffer buf = new StringBuffer("");
if(length > 0){
buf.append(arr[0]);
}
for(int i = 1 ; i < length ; i++){
buf.append(',');
buf.append(arr[i]);
}
确实是个比较不错的实现,领教了! 只是本人比较喜欢foreach循环,省去了根据下标来取数据项
11楼:自由者 发表于 2010-12-16 12:47 回复此评论
引用来自“张优”的评论
apache common包下的StringUtils的join方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static String join(Iterator iterator, String separator) {
// handle null, zero and one elements before building a buffer
if (iterator == null) {
return null;
}
if (!iterator.hasNext()) {
return EMPTY;
}
Object first = iterator.next();
if (!iterator.hasNext()) {
return ObjectUtils.toString(first);
}
// two or more elements
StringBuffer buf = new StringBuffer(256); // Java default is 16, probably too small
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
if (separator != null) {
buf.append(separator);
}
Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
多谢分享!学习了!
12楼:燃灯 发表于 2010-12-16 13:49 回复此评论
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.ArrayList;
import java.util.List;
/**
* 集合操作
* @author intrl
* @date 2010-12-15
* @version 1.0
*/
public class Test {
public static void main(String[] args) {
List list=new ArrayList();
list.add("aaa"+",");
list.add("bbb"+",");
list.add("ccc"+",");
System.out.println(listToString(list));//aaa,bbb,ccc
}
}
13楼:自由者 发表于 2010-12-17 18:24 回复此评论
引用来自“张优”的评论
开始没仔细看楼主的代码,刚看了下,好简洁。
如果我在25行和26行之间加入逻辑代码也是可以的,如: if("aaa".equals(string)){ continue; } 此时结果将是bbb,ccc 依然可以得出正确结果 。当然这段逻辑代码可以通过传参做到更灵活,等等。。
14楼:programtic 发表于 2010-12-17 18:28 回复此评论
什么意思? 没明白楼上的。 主要是你的代码在循环里面有判断,每循环一次,都要判断if,从效率角度来说,应该效率不怎么高。
15楼:自由者 发表于 2010-12-21 12:54 回复此评论
引用来自“张优”的评论
什么意思? 没明白楼上的。 主要是你的代码在循环里面有判断,每循环一次,都要判断if,从效率角度来说,应该效率不怎么高。
通过传参过滤List中的某些对象(如:aaa)使其不显示在结果中
16楼:Sky__ 发表于 2010-12-21 23:20 回复此评论
以后这种代码最好不要发表...
17楼:自由者 发表于 2010-12-22 08:29 回复此评论
引用来自“袁柯”的评论
以后这种代码最好不要发表...
多谢提醒
18楼:yeahking 发表于 2010-12-22 14:08 回复此评论
引用来自“袁柯”的评论
以后这种代码最好不要发表...
是啊~要保护好自己的代码
19楼:君无畏 发表于 2010-12-22 22:12 回复此评论
我平常都这么用的,不知道对不对?
List<String> list=new ArrayList<String>();
list.add("a[");
list.add("]b");
System.out.println(list.toString().replaceFirst("^\\[", "").replaceAll("\\]$", ""));
20楼:gxj413真身 发表于 2010-12-22 23:18 回复此评论
apache common的代码果然写得好