gpt4 book ai didi

java - 使代码更具可读性,迭代内部映射

转载 作者:行者123 更新时间:2023-12-01 17:43:24 24 4
gpt4 key购买 nike

所以目前我正在寻找更有经验的程序员的一些提示。我现在的情况是,当查看我的代码时,它似乎不可读,这可能是一个很大的缺陷。那么让我们看看代码本身:

在一个类中我有方法:

    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/

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