所以目前我正在寻找更有经验的程序员的一些提示。我现在的情况是,当查看我的代码时,它似乎不可读,这可能是一个很大的缺陷。那么让我们看看代码本身:
在一个类中我有方法:
protected void createModelsCharacterisitcListGroup(Map<CharacterType, Map<String, String>> characters) {
for (Entry<CharacterType, Map<String, String>> outterEntry : characters.entrySet()) {
for (Entry<String, String> innerEntry : outterEntry.getValue().entrySet()) {
outterEntry.getKey().create(characters.get(outterEntry.getKey()).get(innerEntry.getKey()), source.getStringified(innerEntry.getKey()));
}
}
}
而 CharacterType
是这样的枚举:
public enum CharacteristicType {
TYPE1 {
@Override
public void create(String name, String value){
}
},
TYPE2{
@Override
public void create(String name, String value) {
}
};
public abstract void create(String name, String value);
}
所以我想做的是:
使用内部 map 中的字符串
,为Map
中给定的CharacterType
调用方法create
最佳答案
在这种特殊情况下,您似乎可以简化代码。
首先,我不知道为什么您获取条目然后重新获取值:
characters.get(outterEntry.getKey())
这只是outterEntry.getValue()
加上额外的步骤,因为characters
只能有一个与outterEntry.getKey()
关联的值,并且您的代码不会修改characters
映射。outterEntry.getValue().get(innerEntry.getKey())
这只是innerEntry.getValue()
加上额外的步骤。您正在迭代outterEntry.getValue()
。
如果您使用 Map.forEach
方法来解压条目,则可以将代码简化为:
characters.forEach((outerKey, outerValue) -> {
outerValue.forEach((innerKey, innerValue) -> {
outerKey.create(innerValue, source.getStringified(innerKey));
});
});
我通常仅在需要修改条目时才使用条目(例如更改与 map 中的键关联的值)。大多数时候,我发现 Map.forEach
更具可读性。
关于java - 使代码更具可读性,迭代内部映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196764/