2014-11-05 2 views
0

Предположим, у меня есть класс MyData.Каков наилучший способ перечислить все имя в списке <String> из списка <MyData>

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

Теперь мой список будет иметь 100 объектов MyData, и я хочу, чтобы извлечь только имена и подготовить новый список:

List<String> nameList; 

Что такое лучший способ сделать это?

ответ

1

Это будет лучший вариант:

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

Если вы не заботитесь сортировкой ...

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

Если у вас есть Java 8 ...

List<Mydata> mydatas = ... 
List<String> names = 
    mydatas.stream().map(mydata -> mydata.name).collect(Collectors.toList()) 
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); 
    } 
} 
Смежные вопросы