如何从对中提取字符串<;布尔值,字符串>;使用Java Stream.of?
我有一个如何从对中提取字符串<;布尔值,字符串>;使用Java Stream.of?,java,string,list,java-stream,Java,String,List,Java Stream,我有一个流您在代码片段中已经拥有的是,函数应用于每个条件。然后,只过滤那些值为true的对象。这似乎与你想要的正好相反。可能会翻转结果,如result->!result.getValue0()?然后,您将需要另一个map操作来获取字符串流而不是对,并需要一个collect操作来连接它们。正如注释中所指出的,请看一看。您的代码片段中已有的是,函数应用于每个条件。然后,只过滤那些值为true的对象。这似乎与你想要的正好相反。可能会翻转结果,如result->!result.getValue0()?然
流您在代码片段中已经拥有的是,函数应用于每个条件。然后,只过滤那些值为true的对象。这似乎与你想要的正好相反。可能会翻转结果,如result->!result.getValue0()
?然后,您将需要另一个map
操作来获取字符串流而不是对,并需要一个collect
操作来连接它们。正如注释中所指出的,请看一看。您的代码片段中已有的是,函数应用于每个条件。然后,只过滤那些值为true的对象。这似乎与你想要的正好相反。可能会翻转结果,如result->!result.getValue0()
?然后,您将需要另一个map
操作来获取字符串流而不是对,并需要一个collect
操作来连接它们。正如评论中指出的,请看一看。我不确定标准的类型,列表
或函数
。无论什么,你都可以尝试以下两种方法
public static class Pair<F, S> {
private F first;
private S second;
public Pair(F first, S second) {
this.first = first;
this.second = second;
}
}
public static void main(String[] args) {
// criteria is a function
Function<String, Pair<Boolean, String>> criteria = (x) -> new Pair<>(true, x);
Stream.of(criteria)
.map(func -> func.apply(null))
.filter(result -> !result.first)
.map(result -> result.second)
.collect(Collectors.joining(","));
// criteria is a list
List<Function<String, Pair<Boolean, String>>> criterias = new ArrayList<>();
criterias.stream()
.map(func -> func.apply(null))
.filter(result -> !result.first)
.map(result -> result.second)
.collect(Collectors.joining(","));
}
公共静态类对{
私人优先;
第二,私营企业;
公共对(F第一,S第二){
this.first=first;
这个秒=秒;
}
}
公共静态void main(字符串[]args){
//标准是一个函数
函数条件=(x)->新对(真,x);
流程(标准)
.map(funct->func.apply(null))
.filter(结果->!结果.第一个)
.map(结果->结果秒)
.collect(收集器。连接(“,”);
//标准是一个列表
列表标准=新的ArrayList();
criterias.stream()
.map(函数->函数应用(空))
.filter(结果->!结果.第一个)
.map(结果->结果秒)
.collect(收集器。连接(“,”);
}
我不确定标准的类型,列表
或函数
。无论什么,你都可以尝试以下两种方法
public static class Pair<F, S> {
private F first;
private S second;
public Pair(F first, S second) {
this.first = first;
this.second = second;
}
}
public static void main(String[] args) {
// criteria is a function
Function<String, Pair<Boolean, String>> criteria = (x) -> new Pair<>(true, x);
Stream.of(criteria)
.map(func -> func.apply(null))
.filter(result -> !result.first)
.map(result -> result.second)
.collect(Collectors.joining(","));
// criteria is a list
List<Function<String, Pair<Boolean, String>>> criterias = new ArrayList<>();
criterias.stream()
.map(func -> func.apply(null))
.filter(result -> !result.first)
.map(result -> result.second)
.collect(Collectors.joining(","));
}
公共静态类对{
私人优先;
第二,私营企业;
公共对(F第一,S第二){
this.first=first;
这个秒=秒;
}
}
公共静态void main(字符串[]args){
//标准是一个函数
函数条件=(x)->新对(真,x);
流程(标准)
.map(函数->函数应用(空))
.filter(结果->!结果.第一个)
.map(结果->结果秒)
.collect(收集器。连接(“,”);
//标准是一个列表
列表标准=新的ArrayList();
criterias.stream()
.map(函数->函数应用(空))
.filter(结果->!结果.第一个)
.map(结果->结果秒)
.collect(收集器。连接(“,”);
}
什么是getValue0()
?Pair
是您自定义的类还是来自任何库?关于示例输入
和您期望的输出如何?@Deadpool您已经编辑了问题,例如代码和要求进一步矛盾,可能需要先用OP澄清。@Deadpool True,收集器。加入
是在使用流时连接字符串的一个很好的提示,只是问题本身并不清楚共享的代码。@Naman抱歉,我不擅长提问,抱歉不清楚。这对来自org.javatuples。示例输入可以是“ABC”和“XYZ”,输出可以是“ABC,XYZ”。什么是getValue0()
?Pair
是您自定义的类还是来自任何库?关于示例输入
和您期望的输出如何?@Deadpool您已经编辑了问题,例如代码和要求进一步矛盾,可能需要先用OP澄清。@Deadpool True,收集器。加入
是在使用流时连接字符串的一个很好的提示,只是问题本身并不清楚共享的代码。@Naman抱歉,我不擅长提问,抱歉不清楚。这对来自org.javatuples。示例输入可以是“ABC”和“XYZ”,输出可以是“ABC,XYZ”