有没有快速的方法从对象列表中提取部分列表?

时间:2011-06-20 23:30:36

标签: java

说,我有一个List学生;

人的定义如下

class Person {
    String id;
    String name;
}

获得学生之后,这是一种获取所使用的ID列表的方法,列表ID为。

3 个答案:

答案 0 :(得分:2)

Guava有Lists.transform功能。您传入要转换的列表并返回与列表关联的元素。

List<Person> people = ...;

List<String> ids = Lists.transform(people, new Function<People, String>(){
     public String apply(People person){
         return person.getId();
     }    
});

http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Lists.html

答案 1 :(得分:0)

如果你正在寻找像其他语言一样的map函数,它会构建一个只提取ID的新列表,那么不,这不是直接可行的(除非使用一些外部集合API)

你应该采用最直接的方式:通过选择ID来迭代列表并建立一个新的。

像我提到的那样,获取这些内容的方法是将TransformIteratorTransformer一起使用,但这些工具默认情况下不附带SDK,因为它们位于 Apache Collections (看看here)。

答案 2 :(得分:0)

就像杰克所说的那样,或者你可以将id分开并制作一个新的序列并重复该过程。