7

Czy istnieje XXXUtils gdzie mogę zrobićKonwersja listę obiektu Osoba do wydzielonej przez getName String() własność osoby obiektu

String s = XXXUtils.join(aList, "name", ","); 

gdzie "name" jest właściwością JavaBeans z obiektu w aList.

Znalazłem tylko StringUtils o metodzie join, ale przekształca ona tylko List<String> w oddzielone String.

Coś

StringUtils.join(BeanUtils.getArrayProperty(aList, "name"), ",") 

że jest szybki i warty użyciu. The BeanUtils rzuca 2 sprawdzone wyjątki, więc mi się nie podoba.

+0

http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-join więcej informacji tutaj, jak korzystać z metody łączenia. –

+0

No tak, ale ja nie mam Stringa, mam Person :) –

+1

Stwórz własną metodę użytkową, która używa BeanUtils.getArrayProperty() i przekształca sprawdzone wyjątki w te uruchomione. –

Odpowiedz

2

nie jestem świadomy w ogóle, ale można napisać swoją własną metodę przy użyciu odbicia, który daje listę wartości nieruchomości, a następnie użyć StringUtils przyłączyć że:

public static <T> List<T> getProperties(List<Object> list, String name) throws Exception { 
    List<T> result = new ArrayList<T>(); 
    for (Object o : list) { 
     result.add((T)o.getClass().getMethod(name).invoke(o)); 
    } 
    return result; 
} 

zdobycia przyłączyć, zrobić to:

List<Person> people; 
String nameCsv = StringUtils.join(getProperties(people, "name")); 
12

Java 8 sposób to zrobić:

String.join(", ", aList.stream() 
    .map(Person::getName) 
    .collect(Collectors.toList()) 
); 

lub po prostu

aList.stream() 
    .map(Person::getName) 
    .collect(Collectors.joining(", ")));