嗨,我是新来的,我有一个问题。
我有这个对象。
public Person(int id,String name, int age){
this.id=id;
this.name=name;
this.age=age;
}
我想创建一个Collection studentsIds。
到现在为止我已经
了 List<Person> students=new ArrayList<Person>();
Collection<Integer> studentsIds=new ArrayList<Person>(students);
有人可以帮助我吗?
答案 0 :(得分:5)
你不能这样做。两者都是不同的数据类型。因此,创建一个Integer集合,然后查看人员集合。
List<Integer> studentsIds=new ArrayList<Integer>();
然后
for (Person p : students){
studentsIds.add(p.age); // change to p.id if you need
}
答案 1 :(得分:1)
你必须做这样的事情
for(Person s: students) studentIds.add(s.id);
答案 2 :(得分:0)
虽然其他人说的是正确答案,但您也可以使用lambda表达式在Java 8中实现这一点:
List<Integer> studentsIds = students.stream()
.map(student -> student.id)
.collect(Collectors.toList());
答案 3 :(得分:0)
如果没有Java 8 lambdas,您可以在Guava库的帮助下使用匿名类:
List<Integer> studentsIds = Lists.transform(students, getStudentId);
private final Function<Person, Integer> getStudentId =
new Function<Person, Integer>() {
@Nullable
@Override
public Integer apply(@Nullable Person student) {
return student == null ? null : student.id;
}
};