关于java:通过Person对象的getName()属性将Person对象列表转换为单独的String

Convert a list of Person object into a separated String by getName() property of Person object

有我能做的东西吗

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

其中,"name"是来自aList中对象的JavaBeans财产。

我发现只有StringUtilsjoin方法,但它只把List转换成分离的String

类似的东西

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

这很快,值得使用。beanutils抛出了2个检查过的异常,所以我不喜欢它。


Java 8这样做的方法:

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

或者只是

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

我不知道有什么,但您可以使用反射编写自己的方法,该反射为您提供属性值列表,然后使用StringUtils加入:

1
2
3
4
5
6
7
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;
}

要加入,请执行以下操作:

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