我想翻译getFromTestState
方法做完全相同的,但使用流和过滤,如果必要的话
public enum TestStatus {
CANCELLED("Cancelled"),
IN_PROGRESS("In Progress"),
TO_VALIDATE("To Validate"),
VALIDATED("Validated"),
EXPIRED("Expired");
private final String id;
public static TestStatus getFromTestStatus(String status) {
for (TestStatus testStatus : TestStatus.values()) {
if (testStatus.getId().equalsIgnoreCase(status)) {
return testStatus;
}
}
return null;
}
}
我正在学习使用流,所以我不知道如何实现这一点。到目前为止,我已经做了以下工作:
public static TestStatus getFromTestStatus(String status) {
return Stream.of(TestStatus.values())
.map(TestStatus::getId)
.filter(id -> {
return id.equalsIgnoreCase(status);
}).collect(Collectors.toList());
}
很明显,我得到了一个字符串列表,但是我不知道如何将它减少到只有一个元素(该列表没有超过一个元素),如果没有找到元素,就会得到null。
此外,我得到了String
,我应该返回相应的TestState,而不是它的id
。
符合方法TestState::getFromTestState
的工作解决方案如下:
TestStatus
getFromTestStatus
方法中的问题:public enum TestStatus {
CANCELLED("Cancelled"),
IN_PROGRESS("In Progress"),
TO_VALIDATE("To Validate"),
VALIDATED("Validated"),
EXPIRED("Expired");
private final String id;
private TestStatus(String id) {
this.id = id;
}
public String getId() { return id; }
public static TestStatus getFromTestStatus(String status) {
return Arrays.stream(TestStatus.values()) // Stream.of calls Arrays.stream
.filter(st -> st.getId().equalsIgnoreCase(status)) // compare id field to status
.findFirst() // returns Optional<TestStatus>
.orElse(null); // fix missing ';', return null if no status is found
}
}
测试:
System.out.println(TestStatus.getFromTestStatus("cancelled"));
System.out.println(TestStatus.getFromTestStatus("canceled"));
输出:
CANCELLED
null
嘿,我会这样做的
public static Optional<TestStatus> getFromTestStatus(String status) {
return Stream.of(TestStatus.values())
.filter(id -> id.equalsIgnoreCase(status)) // you don't need the brackets here.
.findFirst() //This returns an optional so you don't need to return null
.orElse(null) //Do this if you force the stream to return null if not found
}
我试图将此for循环和if条件转换为Java流,过滤和收集 我试过这个: 然而,这是完全错误的。我没能按预期工作 有人能告诉我,我应该如何使用流,过滤,收集?
如何使用java8流和过滤器过滤嵌套循环? 假设我有一个汽车列表(
我有两个简单的POJOs: 然后我生成一些数据,我为父母添加100个孩子: 我的目标是移除所有10岁以下的儿童: 最后,我列出了十岁以上的孩子。但是我不想写一个单独的方法。 如何得到所有的父母与名单上的孩子十岁以上只使用单一流?
问题内容: 我有一个MySql表,我想查询其中 成对 的列在特定集中的行。例如,假设我的表格如下所示: 现在,我希望提取其中 (f1,f2) 对为(’a’,30)或(’b’,20)的行,即行2,3,4。我也希望使用“ IN”样式的过滤器来完成此操作,因为我可能有很多对要提取。如果我尝试类似的方法: 我得到IN子句中为f1和f2指定的值的笛卡尔积,即具有f1 =’a’或’b’的所有可能组合的行,以及
问题内容: 我有一个像这样的数组: 现在,我想按某种条件过滤该数组,只保留值等于2的元素,并删除值不等于2的所有元素。 所以我的预期结果数组将是: 注意:我想保留原始数组中的键。 如何使用PHP做到这一点?有内置功能吗? 问题答案:
问题内容: 我在JTextfield上输入了一个名称,但是我的表没有过滤任何东西! 我的代码: 问题答案: 您正在呼叫的 构造。它应该如何从filterTF中读取 文本 。我认为您应该从分配给的Action Event Listener调用它,提交(单击)文本时将调用它,如下所示: 如果要使用“根据用户键类型进行过滤”事件,请将键侦听器添加到您要输入过滤字符串的文本字段中。 但是,正如下面的注释所