对不起标题,但我不知道如何更好地解释它!
假设我在Java中有这个类:
public class ToyClass {
public int number;
}
一个名为ToyClassList
有办法做这样的事情:
List<Integer> numbersInToyClassList = new ArrayList<>().addAll(ToyClassList.number)
换句话说,我试图以更优雅的方式写这段代码:
List<Integer> numbersInToyClassList = new ArrayList<>();
for(ToyClass element : ToyClassList)
numbersInToyClassList.add(element.number);
答案 0 :(得分:2)
在Java 7及更早版本中,您可以添加几行代码来实现自己的Stream API:
interface Function<A, B> {
B map(A a);
}
class ListUtil {
public static <A, B> List<B> map(Function<A, B> function, List<A> aList) {
List<B> bList = new ArrayList<>();
for (A a : aList) {
bList.add(function.map(a));
}
return bList;
}
}
使用以下代码转换toyClassList
:
List<Integer> numbersInToyClassList = ListUtil.map(
new Function<ToyClass, Integer>(){
public Integer map(ToyClass toy){
return toy.number;
}
}, toyClassList);
答案 1 :(得分:1)
在Java 8中,你可以做到
List<Integer> numbersInToyClassList = toysClassList.stream()
.map(ToysClass::getNumber)
.collect(Collectors.toList);
这是否更优雅是你的判断。
顺便说一下:您的对象numbersInToyClassList
应该处于较低的驼峰状态,因为它不是类型。