从List <mydata> </mydata> </string>列出List <string>中所有名称的最佳方法是什么?

时间:2014-11-05 14:51:10

标签: java arraylist collections

假设我有一个MyData类。

public class Mydata(){
    private String name;
    private int age;
}

现在我的列表将有100个MyData对象,我想只提取名称并准备一个新列表:

List<String> nameList;

最好的方法是什么?

4 个答案:

答案 0 :(得分:1)

这将是最好的选择:

for (Mydata mydata : mydataList){
    nameList.add(mydata.name);
}

答案 1 :(得分:1)

使用Java 8,您可以使用stream()和map()来获得更简洁明了的变体:

data.stream().map(Mydata::getName).collect(Collectors.toList());

这是一个完整的程序:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Test {

    static class Mydata
    {
        private String name;
        private int age;

        public String getName() {return name;}
        public int getAge() {return age;}

        public Mydata(String name, int age)
        {
            this.name = name;
            this.age = age;
        }

    }

    public static void main(String[] args)
    {
        List<Mydata> data = Arrays.asList(new Mydata[] {new Mydata("Tom",10),new Mydata("Mary",20)});
        //map(m->m.name) also works
        List<String> nameList = data.stream().map(Mydata::getName).collect(Collectors.toList());
        System.out.println(nameList);
    }
}

答案 2 :(得分:0)

如果你不关心排序......

for (Mydata mydata : mydataList){
    nameList.add(mydata.name);
}

答案 3 :(得分:0)

如果你有Java 8 ......

List<Mydata> mydatas = ...
List<String> names =
    mydatas.stream().map(mydata -> mydata.name).collect(Collectors.toList())