7

v'è un XXXUtils dove posso fareconvertire un elenco di oggetti Persona in una stringa separata da getName() di proprietà della persona oggetto

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

dove "name" è una struttura JavaBeans dall'oggetto nel aList.

Ho trovato solo StringUtils con il metodo join, ma trasforma solo un List<String> in un String separato.

Qualcosa di simile

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

che è veloce e meriti utilizzando. Il BeanUtils genera 2 eccezioni controllate, quindi non mi piace.

+0

http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-join ulteriori informazioni qui come utilizzare il metodo di join. –

+0

beh sì, ma non ho String, ho Person :) –

+1

Crea il tuo metodo di utilità che utilizza BeanUtils.getArrayProperty() e trasforma le eccezioni controllate in quelle di runtime. –

risposta

2

Io non sono a conoscenza di alcuna, ma si potrebbe scrivere il proprio metodo che utilizza riflessione che ti dà l'elenco dei valori di proprietà, quindi utilizzare StringUtils di unirsi che:

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

per ottenere il vostro join, fare questo:

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

Java 8 modo di farlo:

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

o semplicemente

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