.... есть короткий путь или более эффективный способ
Итак, вы ищете более эффективный способ сделать это:
List<String> names = new ArrayList<String>();
for( Customer customer : yourCustomerList ) {
names.add( customer.getName() );
}
?!!!!
Или просто другой способ?
Все предыдущие ответы на самом деле не более эффективны с точки зрения времени выполнения или кодирования. Однако они, без сомнения, более гибкие.
Другой альтернативой было бы включить Scala Groovy в ваш Java-код и использовать это:
list.map( _.name )
list.collect { it.name }
В случае компиляции классы Groovy можно использовать из Java, или вы можете подключить их как сценарий.
Вот пример для данного класса Customer
, использующего Groovy в качестве скрипта.
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.
Вот полный исходный код. Для его запуска вам просто нужны Java1.6 и Groovy в пути к классам.
person
OscarRyz
schedule
24.06.2010