stream.map函数中函数接口的apply函数怎么写?
How to write apply function of function Interface in stream.map function?
给定一个包含 5 个 Employee(id,name,location,salary) 对象的 ArrayList,借助 Function 编写程序提取每个 Employee 的位置详细信息并将其存储在 ArrayList 中。
我想用 stream.map 函数来回答这个问题。
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
class Employee{
int id;
String name;
String location;
int salary;
Employee(int id,String name,String location,int salary){
this.id=id;
this.name=name;
this.location=location;
this.salary=salary;
}
}
public class JAVA8 {
public static void main(String[] args){
ArrayList<Employee> al=new ArrayList<Employee>();
Employee e=new Employee(123,"Muskan","Rajasthan",34000);
Employee e1=new Employee(456,"Sonali","Maharashtra",45003);
Employee e2=new Employee(789,"Khushboo","LaxmanGarh",22222);
Employee e3=new Employee(012,"Minakshi","USA",22);
al.add(e);
al.add(e1);
al.add(e2);
al.add(e3);
Function<Employee,String> f1=(s)->(s.location);
String a;
List<String> li=al.stream()
.map(Employee::apply)
.collect(Collectors.toList());
}
}
但是我在这一行遇到错误 - .map(Employee:: apply)
。
我想在地图中使用 String s=f1.apply(employeeObject)
。怎么做
Employee
没有 apply
方法。
您应该将实现 Function<Employee,String>
的 f1
实例传递给 map()
:
List<String> li=al.stream()
.map(f1)
.collect(Collectors.toList());
P.S。最好使用 getter 而不是直接访问实例变量:
与 lambda Function<Employee,String> f1 = s -> s.getLocation();
附方法参考Function<Employee,String> f1 = Employee::getLocation;
当然,你可以不用f1
:
List<String> li=al.stream()
.map(Employee::getLocation)
.collect(Collectors.toList());
Employee
class中没有apply方法。
可以直接使用函数
Function<Employee,String> f1=(s)->(s.location);
List<String> li=al.stream().map(f1).collect(Collectors.toList());
或者在 map() 中使用 lambda
List<String> li=al.stream().map(s->s.location).collect(Collectors.toList());
给定一个包含 5 个 Employee(id,name,location,salary) 对象的 ArrayList,借助 Function 编写程序提取每个 Employee 的位置详细信息并将其存储在 ArrayList 中。
我想用 stream.map 函数来回答这个问题。
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
class Employee{
int id;
String name;
String location;
int salary;
Employee(int id,String name,String location,int salary){
this.id=id;
this.name=name;
this.location=location;
this.salary=salary;
}
}
public class JAVA8 {
public static void main(String[] args){
ArrayList<Employee> al=new ArrayList<Employee>();
Employee e=new Employee(123,"Muskan","Rajasthan",34000);
Employee e1=new Employee(456,"Sonali","Maharashtra",45003);
Employee e2=new Employee(789,"Khushboo","LaxmanGarh",22222);
Employee e3=new Employee(012,"Minakshi","USA",22);
al.add(e);
al.add(e1);
al.add(e2);
al.add(e3);
Function<Employee,String> f1=(s)->(s.location);
String a;
List<String> li=al.stream()
.map(Employee::apply)
.collect(Collectors.toList());
}
}
但是我在这一行遇到错误 - .map(Employee:: apply)
。
我想在地图中使用 String s=f1.apply(employeeObject)
。怎么做
Employee
没有 apply
方法。
您应该将实现 Function<Employee,String>
的 f1
实例传递给 map()
:
List<String> li=al.stream()
.map(f1)
.collect(Collectors.toList());
P.S。最好使用 getter 而不是直接访问实例变量:
与 lambda
Function<Employee,String> f1 = s -> s.getLocation();
附方法参考
Function<Employee,String> f1 = Employee::getLocation;
当然,你可以不用f1
:
List<String> li=al.stream()
.map(Employee::getLocation)
.collect(Collectors.toList());
Employee
class中没有apply方法。
可以直接使用函数
Function<Employee,String> f1=(s)->(s.location);
List<String> li=al.stream().map(f1).collect(Collectors.toList());
或者在 map() 中使用 lambda
List<String> li=al.stream().map(s->s.location).collect(Collectors.toList());