Используя Guava , вы можете создать представление свойства foo
объектов в List
, используя Lists.transform , например:
public class Obj {
String foo;
String bar;
public static final Function<Obj, String> FOO = new Function<Obj, String>() {
public String apply(Obj input) {
return input.foo;
}
};
}
public void someMethod(List<Obj> objs) {
List<String> foos = Lists.transform(objs, Obj.FOO);
...
}
В отличие от других решений, это просто представление List<Obj>
и, как таковое, оно не выделяет целую отдельную ArrayList
или некоторую такую в памяти и может быть создано почти мгновенно независимо отразмера вашего List<Obj>
.Кроме того, если вы измените исходный List<Obj>
, список foos
будет отражать это изменение.
В Java 8 (когда-то в 2012 году) это станет намного проще с лямбда-выражениями и ссылками на методы.Вы сможете сделать что-то вроде этого:
List<Obj> objs = ...
List<String> foos = objs.map(#Obj.getFoo);