7

의 속성은 내가 "name"aList의 개체에서 자바 빈즈 속성입니다가 뒤로 getName 분리 된 문자열에 Person 객체의 목록을 변환() Person 객체

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

을 할 수있는 XXXUtils있다.

join 방법을 가지지 만, List<String>은 분리 된 String으로 변환됩니다. 빠르고 worths 사용을의

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

같은

뭔가. BeanUtils는 2 개의 확인 된 예외를 던집니다. 그래서 나는 그것을 좋아하지 않습니다.

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

, 당신을 조인하려면 :

+0

http://stackoverflow.com/questions/1515437/java-function-for-arrays-like-phps-join 여기에서 조인 방법을 사용하는 방법에 대한 자세한 내용을 참조하십시오. –

+0

그래,하지만 String이 없다. 나는 Person을 가지고있다. –

+1

BeanUtils.getArrayProperty()를 사용하고 체크 된 예외를 런타임 객체로 변환하는 자신 만의 유틸리티 메소드를 만든다. –

답변

2

내가 어떤 잘 모르는 것 같아요,하지만 당신은 당신에게 속성 값의 목록을 제공 반사를 이용하여 자신 만의 방법을 쓸 수있다, 그 다음에 가입 StringUtils를 사용 이 : 그 일의

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

자바 8 방법 :

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

하거나

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