Преобразование списка объекта Person в отдельную строку с помощью свойства getName() объекта Person

Есть ли XXXUtils где я могу сделать

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

где "name" является свойством JavaBeans из объекта в aList,

Я нашел только StringUtils имеющий join метод, но он только преобразует List<String> в отдельный String,

Что-то вроде

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

это быстро и стоит использовать. BeanUtils выбрасывает 2 проверенных исключения, поэтому мне это не нравится.

2 ответа

Java 8 способ сделать это:

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

или просто

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

Я не знаю ни одного, но вы могли бы написать свой собственный метод, используя отражение, которое дает вам список значений свойств, а затем использовать StringUtils присоединиться к этому:

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

Чтобы получить ваше присоединение, сделайте это:

List<Person> people;
String nameCsv = StringUtils.join(getProperties(people, "name"));
Другие вопросы по тегам