-3
的所有第一個值我有列表:獲取列表<Object[]>
List<Object[]> list;
在這個名單上有結構:
list.get(0) returns ("dog", 11)
list.get(1) returns ("cat", 22)
etc.
我怎麼只能檢索使用lambda表達式寵物類型?我想只含有「狗」,「貓」等,
的所有第一個值我有列表:獲取列表<Object[]>
List<Object[]> list;
在這個名單上有結構:
list.get(0) returns ("dog", 11)
list.get(1) returns ("cat", 22)
etc.
我怎麼只能檢索使用lambda表達式寵物類型?我想只含有「狗」,「貓」等,
一個簡單的方法是使用流API的新列表:
List firstElements = list.stream().map(o -> o[0]).collect(Collectors.toList());
這是因爲使用map
和collect
一樣簡單。
private void test(String[] args) {
List<Animal> list = new ArrayList<>();
list.add(new Animal("dog",11));
list.add(new Animal("cat",22));
List<String> names = list.stream()
// Animal -> animal.type.
.map(a -> a.getType())
// Collect into a list.
.collect(Collectors.toList());
System.out.println(names);
}
我用Animal
爲:
class Animal {
final String type;
final int age;
public Animal(String type, int age) {
this.type = type;
this.age = age;
}
public String getType() {
return type;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Animal{" +
"type='" + type + '\'' +
", age=" + age +
'}';
}
}
爲什麼這樣的非面向對象的結構? F#不是更好的匹配嗎? –
到目前爲止您嘗試了什麼?看看你的列表的方法'stream()'和流中的filter(),map(),collect()等等。 – Thomas