根据类型的成员加入集合
Joining a collection based on members of the type
我有一个 class A 及其成员 b 和 c。
现在我用这个构造 List<A>
:
add(new A().setb("abcd").setc("123456"));
add(new A().setb("efgh").setc("789101"));
add(new A().setb("ijkl").setc("112345"));
我想将此列表转换为如下所示的字符串
abcd,123456
efgh,789101
ijkl,112345
现在最明显的方法是使用 StringBuilder
并遍历列表。现在我想使用 Guava Joiner
like
来建立它
Joiner.on("\n").skipNulls().join(.......)
join()
方法需要一个可迭代对象。我能以某种方式通过 A.getb(),A.getc()
Iterables.transform
有帮助吗?
有了Java8,就可以用
String result = as.stream().map((a) -> a.b + ',' + a.c).collect(Collectors.joining("\n"));
首先从 List
中的每个 A
元素生成一个 String
,然后通过连接各个 String
值将其收集到 String
换行符。
使用番石榴,您会得到与
类似的东西
String result = Joiner.on('\n').join(Iterables.transform(as, (a) -> a.b + ',' + a.c));
假设 as
是你的 List<A>
。
解决了!!
假设 List<A>
被称为 Alist
String join=Joiner.on("\n").skipNulls().join(Iterables.transform(Alist, new Function<A,String>(){
public String apply(A input){
return input.getb()+","+input.getc();
}
}));
我有一个 class A 及其成员 b 和 c。
现在我用这个构造 List<A>
:
add(new A().setb("abcd").setc("123456"));
add(new A().setb("efgh").setc("789101"));
add(new A().setb("ijkl").setc("112345"));
我想将此列表转换为如下所示的字符串
abcd,123456
efgh,789101
ijkl,112345
现在最明显的方法是使用 StringBuilder
并遍历列表。现在我想使用 Guava Joiner
like
Joiner.on("\n").skipNulls().join(.......)
join()
方法需要一个可迭代对象。我能以某种方式通过 A.getb(),A.getc()
Iterables.transform
有帮助吗?
有了Java8,就可以用
String result = as.stream().map((a) -> a.b + ',' + a.c).collect(Collectors.joining("\n"));
首先从 List
中的每个 A
元素生成一个 String
,然后通过连接各个 String
值将其收集到 String
换行符。
使用番石榴,您会得到与
类似的东西String result = Joiner.on('\n').join(Iterables.transform(as, (a) -> a.b + ',' + a.c));
假设 as
是你的 List<A>
。
解决了!!
假设 List<A>
被称为 Alist
String join=Joiner.on("\n").skipNulls().join(Iterables.transform(Alist, new Function<A,String>(){
public String apply(A input){
return input.getb()+","+input.getc();
}
}));