Преобразование списка объекта 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"));