我想加入列表的所有String name
属性,用斜杠/
分隔。特别重要的是,例如。最后一个条目在末尾没有附加斜杠。
List<MyClass> list;
class MyClass {
String name;
}
这样做的最佳方式是什么(我不能使用Java 8)。是否有任何库,例如Guava
,提供开箱即用的功能,而且我可能还没找到?
答案 0 :(得分:5)
Guava提供了一种Lists.transform
方法,可以将所有name
属性提取到列表中,如下所示:
List<String> names = Lists.transform(list, new Function<MyClass,String>() {
public String apply(MyClass obj) {
return obj.name;
}
});
它还提供string Joiner
,可让您完成任务:
String namesSeparatedBySlash = Joiner.on("/").join(names);
当然,您可以在Lists.transform
的调用中调用join
来在一个语句中执行此操作,如下所示:
String namesSeparatedBySlash = Joiner
.on("/")
.join(
Lists.transform(list, new Function<MyClass,String>() {
public String apply(MyClass obj) {
return obj.name;
}
})
);