7

¿Hay un XXXUtils donde yo puedo hacerconvertir una lista de objeto Person en una cadena separada por getNombre (a) Propiedad de la persona objeto

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

donde "name" es una propiedad JavaBeans del objeto en el aList.

Encontré solo StringUtils teniendo join método, pero solo transforma List<String> en un String separado.

Algo así como

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

que es rápido y usando valores de las partes. BeanUtils arroja 2 excepciones marcadas, por lo que no me gusta.

+0

http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-se unen más información aquí cómo utilizar el método de unión. –

+0

bueno, sí, pero no tengo String, tengo Person :) –

+1

Crea tu propio método de utilidad que usa BeanUtils.getArrayProperty() y transforma las excepciones marcadas en las de tiempo de ejecución. –

Respuesta

2

No estoy al tanto de cualquier, pero se puede escribir su propio método utilizando la reflexión que proporciona la lista de valores de la propiedad, a continuación, utilizar StringUtils unirse a ese:

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

para obtener su JOIN, hacer esto:

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

Java 8 manera de hacerlo:

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

o simplemente

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