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

标签 java

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

在一个类中我有方法:

    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/

相关文章:

java - 我应该避免多部分/表单请求吗?

java - 如何在TableView中设置编码

java - jfreechart,图表创建错误

java - 给程序时间来关闭线程,但使用 System.exit 备份计划?

java - Eclipse java.lang.ClassNotFoundException : com. google.gwt.dev.About

java - 这个java代码的解释是什么?

java 。二维数组按列排序

java - Maven 默认分隔符

java - 如何在 ContainerRequestFilter 中获取远程 IP

java - RTF Java 解析器