Java 8 and above:
List<String> namesList = personList.stream()
.map(Person::getName)
.collect(Collectors.toList());
If you need to make sure you get an ArrayList
as a result, you have to change the last line to:
...
.collect(Collectors.toCollection(ArrayList::new));
Java 7 and below:
The standard collection API prior to Java 8 has no support for such transformation. You'll have to write a loop (or wrap it in some "map" function of your own), unless you turn to some fancier collection API / extension.
(The lines in your Java snippet are exactly the lines I would use.)
In Apache Commons, you could use CollectionUtils.collect
and a Transformer
In Guava, you could use the Lists.transform
method.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…