如何使用“Person”列表创建Integer集合?

时间:2013-12-12 15:24:28

标签: java list object collections

嗨,我是新来的,我有一个问题。

我有这个对象。

    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);

有人可以帮助我吗?

4 个答案:

答案 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;
            }
        };