首页 > 解决方案 > 使用函数显示作业列表

问题描述

我正在学习 lambda。但我在显示结果时遇到了问题。

public class JavaTest {

public static Function<String, String> function2() {
    return str -> {return str.replace("programmer", "engineer");};
}

public static void main(String[] args) {
    List<Person> results = new ArrayList<Person>();
    
    results.add(new Person("Elsdon", "Jaycob","Java programmer","male",43,2000));
    results.add(new Person("Tamsen", "Brittany","Java programmer","female",23,1500));
    results.add(new Person("Floyd", "Donny","Java programmer","male",33,1800));
    
    //results.stream().map(function2()).collect(Collectors.toSet());

但是当我尝试调试我的代码时,map.

我想知道如何正确使用function。任何回复都是感谢的。

标签: javafunctionlambda

解决方案


假设你有一个Person类:

public class Person {
    private String name;
    private String familyName;
    private String jobTitle;
    // Other attributes and setter/getter methods
}

现在你有两种方法:

1- 覆盖Person类的 toString() 方法:

@Override 
public String toString() {
    return this.name + " " + this.familyName + " " + this.jobTitle;
}

然后改变你function2()如下:

public static Function<Person> function2() {
    return p -> {return p.toString().replace("programmer", "engineer");};
}

2-或者您只能更改jobTitle

public static Function<Person> function2() {
    return p -> {return p.getJobTitle().replace("programmer", "engineer");};
}

推荐阅读