gpt4 book ai didi

java - 更好的设计模式?

转载 作者:行者123 更新时间:2023-11-30 08:02:34 25 4
gpt4 key购买 nike

我的 myArrayList 中已有值。对于这个例子,假设其中只有两个元素(firstName 和 lastName)。我需要从 myArrayList 获取值并将它们与 String 进行比较,如果匹配则从 bean 获取值并将其放入映射中:

        Map<String,String> myMap;
for(String element: myArrayList){
if(element.equalsIgnoreCase("firstName")){
myMap.put("firstName", bean.getFirstName());
}else if(element.equalsIgnoreCase("lastName")){
myMap.put("lastName", bean.getLastName());
}
}

问题是当你在 myArrayList 中有三十四十个元素时你会遇到性能问题(我假设),而且感觉不对。

我试过这个:

        String name = null;
String value = null;
for(int i = 0; i < myArrayList.size(); i++){
name = myArrayList.get(i);
value = bean.get(name);
myMap.put(name, value);
}

但是“value = bean.get(name);”这一行是说方法 get(String) 在 bean 类中未定义,实际上我们在 bean 类中没有这样的方法,它只有标准的 getter 和 setter 方法:

public class Bean implements Serializable {
private String firstName;
private String lastName;

public String getFirstName(){
return firstName;
}

public void setFirstName(String firstName){
this.firstName = firstName;
}

public String getLastName(){
return lastName;
}

public void setLastName(String lastName){
this.lastName = lastName;
}

}

现在我正在考虑如何提出一些设计模式来优化我的逻辑并且不影响代码的性能。请随时提问,如果您需要更多信息,我会进行编辑。任何帮助是极大的赞赏。谢谢。

编辑:shmosel 的回答对我来说非常好,谢谢大家的帮助!干杯!

最佳答案

@HankD 和@Natalia 提供了一些有效的解决方案,但我没有看到提到的另一个选项是重构 Bean 以支持 get(String) 方法:

public class Bean implements Serializable {
private Map<String, String> properties = new HashMap<>();

public String get(String property) {
return properties.get(property);
}

public void set(String property, String value) {
properties.put(property, value);
}

public String getFirstName(){
return get("firstName");
}

public void setFirstName(String firstName){
set("firstName", firstName);
}

public String getLastName(){
return get("lastName");
}

public void setLastName(String lastName){
set("lastName", lastName);
}

}

关于java - 更好的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36874927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com