2015-02-02 3 views
4

Скажем, у меня есть этот класс:Как я могу использовать 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" 

Как это сделать?

+0

Почему бы не построить строку самостоятельно? – meskobalazs

+0

@meskobalazs Я стараюсь держать его простым и учиться. –

+0

Возможный дубликат [Есть ли способ присоединиться к строкам, каждый со специальной окружением?] (Http://stackoverflow.com/questions/20203594/is-there-a-way-to-join-strings-each- with-a-specific-around-string) – Joe

ответ

9

"Старая школа" решение:

Вы можете использовать встроенный стандартный 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.on(", ").join(Iterables.transform(myList, new Function<MyClass, String>() { 
    public String apply(MyClass object) { return object.getPropertyOne(); } 
})); 
+0

Вы уверены, что это правильно? Он не компилируется. (Использование Joiner) –

+0

Я не тестировал код, так как я не использую эту библиотеку. Какая ошибка? – meskobalazs

+0

Метод apply требует параметра типа String, а не MyClass. –

 Смежные вопросы

  • Нет связанных вопросов^_^