7

Gibt es ein XXXUtils wo ichKonvertieren eine Liste von Personen-Objekt in einen String getrennt von getName() Eigenschaft Person Objekt

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

tun kann, wo "name" von dem Objekt in den aList eine JavaBean Eigenschaft ist.

Ich fand nur StringUtils mit join Methode, aber es wandelt nur eine List<String> in eine separate String.

So etwas wie

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

, die schnelle und worths verwenden. Das BeanUtils wirft 2 geprüfte Ausnahmen, also mag ich es nicht.

+0

http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-join Weitere Informationen hier, wie Sie die Join-Methode verwenden. –

+0

Nun ja, aber ich habe keine Zeichenfolge, ich habe Person :) –

+1

Erstellen Sie Ihre eigene Hilfsmethode, die BeanUtils.getArrayProperty() verwendet und die überprüften Ausnahmen in Runtime-Einsen transformiert. –

Antwort

2

Ich bin mir nicht bewusst, jeder, aber Sie können Ihre eigene Methode mithilfe von Reflektion schreiben, dass Sie die Liste der Eigenschaftswerte gibt, dann StringUtils dass beitreten verwenden:

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; 
} 

Ihre bekommen join, tun dies:

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

Java 8 Art und Weise tun:

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

oder nur

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