....지름길이나
그래서 더 효율적인 방법이, 당신이 할 수있는보다 효율적인 방법을 찾고 :
List<String> names = new ArrayList<String>();
for(Customer customer : yourCustomerList) {
names.add(customer.getName());
}
!!!!?
또는 다른 길?
이전의 모든 대답은 런타임이나 코딩 측면에서 실제로 더 효율적이지 않습니다. 그러나 그들은 의심의 여지없이 더 유연합니다.
또 다른 대안은 자바 코드에서
스칼라
그루비를 포함하는이 사용하는 것 : 컴파일 된 경우
list.map(_.name)
list.collect { it.name }
, 그루비 클래스는 자바에서 사용할 수 있습니다, 또는 당신은 할 수 스크립트로 연결하십시오.
다음은 Groovy를 스크립트로 사용하여 주어진 Customer
클래스의 샘플입니다.
List<Customer> customers = Arrays.asList(new Customer[]{
new Customer("A","123",1),
new Customer("B","456",2),
new Customer("C","789",3),
new Customer("D","012",4)
});
setVariable(customers, "list");
evaluate("names = list.collect { it.name } ");
List<String> names = (List<String>) getVariable("names");
System.out.println("names = " + names);
출력 :
names = [A, B, C, D]
참고 : 나는 가독성을 위해 방법을 추출,하지만 당신은 다시 그냥 다른, 정말 일반보다 더 효율적,
아래 그들을 볼 수 있지만, for 루프.
여기는 complete source code입니다. 이를 실행하려면 classpath에 Java1.6과 Groovy가 필요합니다.
나는 네가 갇혀 있다고 생각한다. 혹시 모험이라면 [quaere] (http://xircles.codehaus.org/projects/quaere)를 볼 수있다. 관련 정보에 대해서는 [Java LINQ에 상응하는 항목은 무엇입니까?] (http://stackoverflow.com/questions/1217228/what-is-the-java-equivalent-for-linq)를보십시오. – R0MANARMY
나는 당신이보다 효율적인 방법을 찾고있는 것은 아니지만보다 효율적인 방법이라고 생각합니다. for-loop의 기본값은 이미 충분히 효율적입니다. – OscarRyz
물론 효능이 현명한 것은 아니지만 다른 사람들이이 같은 일상적인 작업을 수행하는 것에 대한 아이디어를 얻으려고했습니다. 구아 바로 (Guava)에 대해 배웠고 람다 (Lambdaj)는 인기있는 대안 중 하나입니다. 그래서 좋았어! – CoolBeans