8

有没有XXXUtils我可以做的地方

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

其中"name"是来自aList.

我发现只有StringUtils方法join,但它只会将 aList<String>转换为分离的String.

就像是

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

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

4

2 回答 2

15

Java 8 的做法:

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

要不就

aList.stream()
    .map(Person::getName)
    .collect(Collectors.joining(", ")));
于 2015-07-23T11:28:34.887 回答
3

我不知道,但是您可以使用反射编写自己的方法,为您提供属性值列表,然后使用它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"));
于 2012-07-04T13:30:03.517 回答