我无法重构并使此片段更清晰,更小。 例如,我想在一行中向listOfValues添加一个新值,而不是首先将其初始化为空的arraylist,然后在单独的行上调用add,最后将listofvalues放在第三行的hasmap中。另外在else语句中是必需的hasMap.put,因为我们得到了对listOfValues的引用,如果我们向它添加一些东西,hashMap会自动包含它吗?
MyObject:
key: String
values: List<Value>
Value:
Value1: String
Value2: String
HashMap<String, MyObject> hashMap = new HashMap<>();
List<Value> listOfvalues;
if (!hashMap.containsKey(key)) {
listOfvalues = new ArrayList<>();
listOfvalues.add(Value.builder().withValue1(Value1).withValue2(Value2).build());
hashMap.put(key, MyObject.builder().withkey(key).withvalues(listOfvalues).build());
} else {
listOfvalues = hashMap.get(key).getvalues();
log.info(String.format("Duplicate key: %s. Previous Value(s): %s", key,
listOfvalues));
listOfvalues.add(Value.builder().withValue1(Value1).withValue2(Value2).build());
hashMap.put(key, MyObject.builder().withkey(key).withvalues(listOfvalues).build());
}
答案 0 :(得分:2)
列表和地图工作的常见部分可以从if/else
移出:
Map<String, MyObject> hashMap = new HashMap<>();
List<Value> listOfvalues;
if (!hashMap.containsKey(key)) {
listOfvalues = new ArrayList<>();
} else {
listOfvalues = hashMap.get(key).getvalues();
log.info(String.format("Duplicate key: %s. Previous Value(s): %s", key, listOfvalues));
}
listOfvalues.add(Value.builder().withValue1(Value1).withValue2(Value2).build());
hashMap.put(key, MyObject.builder().withkey(key).withvalues(listOfvalues).build());