我是 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/