【发布时间】:2020-06-30 05:08:11
【问题描述】:
我想在Java 7中以有效的方式更改列表中的一些对象属性而没有任何循环,因为在Java 8中我们可以使用流,请不要参考任何第三方像 Guava 这样的库,因为我无法将任何新库添加到公司旧系统中。
MenuResponse.java
public class MenuResponse {
String id;
String title;
String type;
// Getters and setters omitted for brevity
}
MenuService.java
public List<MenuResponse> getMenu() {
List<MenuResponse> data = new ArrayList<>();
/* sample local data */
MenuResponse a = new MenuResponse();
a.setId("1");
a.setTitle("Time Deposit");
a.setType("OK");
MenuResponse b = new MenuResponse();
b.setId("2");
b.setTitle("Account");
b.setType("OK");
MenuResponse c = new MenuResponse();
c.setId("3");
c.setTitle("Submission Wizard");
c.setType("DISABLED");
data.add(a);
data.add(b);
data.add(c);
/* here i want to alter the title menu to "Under Maintenance" if type = 'DISABLED' */
/* this is my best in Java 8 */
Optional<MenuResponse> dd = data.stream()
.filter(menu -> menu.getType().equalsIgnoreCase("DISABLED"))
.findFirst();
if(dd.isPresent()){
dd.get().setTitle("Under Maintenance");
}
return data;
}
目标
基于上面的 sn-p 我想更新一些数组对象属性,在这种情况下,我想将 MenuResponse 的标题更改为“维护中”,以防类型等于“禁用”,但没有任何循环。
任何帮助和解释将不胜感激,谢谢
【问题讨论】:
-
没有任何循环,你有迭代??
-
是只修改一个对象的属性,还是修改类型为
DISABLED的所有对象的属性? -
好吧,
c.setTitle("Under Maintenance")可以工作 -
我认为迭代就像循环一样,顺便说一下我上面的java 8代码运行良好,现在如何在java 7中做到这一点,只有一个对象不是全部