Как я могу использовать Joiner, чтобы объединить только определенные свойства?

Допустим, у меня есть этот класс:

public class MyClass {
    private String propertyOne;
    private String propertyTwo;
    // getters setters...
}

Теперь, в моем методе тестирования, я пытаюсь что-то вроде:

List<MyClass> myList = myListDao.findAll(); 
String aStringFullOfPropertyOnesOfAllMyObjects =  Joiner.on(", ").join(myList.iterator());

StringЯ хочу вернуть это что-то вроде:

"propOneOfObjectOne, propOneOfObjectTwo, propOneOfObjectThree"

Как я могу это сделать?

1 ответ

Решение

Решение "старой школы":

Вы можете использовать встроенный стандартный 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();

Используя Joiner:

С помощью Joiner из связанного ответа:

Joiner.on(", ").join(Iterables.transform(myList, new Function<MyClass, String>() {
    public String apply(MyClass object) { return object.getPropertyOne(); }
}));
Другие вопросы по тегам