Java 8 Lambda 将函数或变量作为参数传递

标签 java lambda

我是 Java 8 lambda 新手。我有一个代码开头:

StringBuilder lemma = new StringBuilder("(");

还有两段代码。第一个:

lemma.append("(");

for (String dt : dts) {
   lemma.append("label1:").append(labelList.getLabel1(dt)).append(OPERATOR);
 }

lemma.delete(lemma.length() - OPERATOR.length(), lemma.length());
lemma.append(")");

第二个:

lemma.append("(");

for (String mt : mts) {
   lemma.append("label2:").append(mt).append(OPERATOR);
 }

lemma.delete(lemma.length() - OPERATOR.length(), lemma.length());
lemma.append(")");

我怎样才能创建一个包含接受参数的两段代码的函数:

List<String> (which is for -dts- or -mts-)

String (which is for -"label1:"- or -"label2:"-)   

func() (which is for -labelList.getLabel1(dt)- or -mt-)

使用 Java 8 lambda 可以做这样的事情吗?

最佳答案

你可以这样写

public static <T> String dump(List<T> list, String desc, Function<T, String> func) {
    StringBuilder lemma = new StringBuilder();
    String sep = "(";
    for (T t : list) {
       lemma.append(sep).append(desc).append(func.apply(t));
       sep = OPERATOR;
    }
    return lemma.length() == 0 ? "()" : lemma.append(")").toString();
 }

您可以通过以下方式调用这些

 String a = dump(dts, "cuzco:", huancayo::getCuzco);
 String b = dump(mts, "cucuta:", m -> m);

关于Java 8 Lambda 将函数或变量作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660811/

相关文章:

java - 防止用户在 SuggestBox 中输入无效内容?

java - 检测鼠标指针消失

java - 如何在解析为 dto 之前获取 http Jersey 响应状态?

c++ - 将 lambda 函数作为第三个参数传递给 QObject::connect 时出错

c++ - 使用依赖于 lambda 函数的类型作为返回类型

java - Tomcat 8 : Invalid keystore format

java - Android - 加载 PDF 文件而不下载或使用 google 文档?

sorting - sortedBy 参数作为变量

C# 扩展方法

python - 'lambda variable=variable: somefunction()' 是如何工作的?