Java 如何使用Joiner仅连接特定属性?
假设我有一门课:Java 如何使用Joiner仅连接特定属性?,java,guava,joiner,Java,Guava,Joiner,假设我有一门课: public class MyClass { private String propertyOne; private String propertyTwo; // getters setters... } 现在,在我的测试方法中,我尝试了以下方法: List<MyClass> myList = myListDao.findAll(); String aStringFullOfPropertyOnesOfAllMyObjects = Jo
public class MyClass {
private String propertyOne;
private String propertyTwo;
// getters setters...
}
现在,在我的测试方法中,我尝试了以下方法:
List<MyClass> myList = myListDao.findAll();
String aStringFullOfPropertyOnesOfAllMyObjects = Joiner.on(", ").join(myList.iterator());
"propOneOfObjectOne, propOneOfObjectTwo, propOneOfObjectThree"
我如何才能做到这一点?传统的解决方案:
您可以使用内置的标准StringBuilder:
StringBuilder builder = new StringBuilder();
Iterator<MyClass> iter = myList.iterator();
for (MyClass object = iter.next(); iter.hasNext();) {
builder.append(object.getPropertyOne());
if (iter.hasNext()) {
builder.append(", ");
}
}
String result = builder.toString();
为什么不自己制作这个字符串?@meskobalazs我正在努力保持它的简单性和学习性。你确定这是正确的吗?它不编译。(使用Joiner)我没有测试代码,因为我没有使用这个库。错误是什么?apply方法需要字符串类型的参数,而不是MyClass。
Joiner.on(", ").join(Iterables.transform(myList, new Function<MyClass, String>() {
public String apply(MyClass object) { return object.getPropertyOne(); }
}));