假设我有一个MyData类。
public class Mydata(){
private String name;
private int age;
}
现在我的列表将有100个MyData对象,我想只提取名称并准备一个新列表:
List<String> nameList;
最好的方法是什么?
答案 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())