gpt4 book ai didi

java - 在 Java 中定义 Map> 映射的最佳方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:44 25 4
gpt4 key购买 nike

我正在将一些 PHP 代码移植到 Java。我有一个定义以下 map 的类:

class Something {
protected $channels = array(
'a1' => array(
'path_key1' => 'provider_offices',
'path_key2' => 'provider_offices',
),
'a2' => array(
'path_key1' => 'provider_users',
'path_key2' => 'provider_users',
),
'a3' => array(
'path_key1' => 'provider_offices',
'path_key2' => 'provider_offices',
),
'a4' => array(
'path_key1' => 'attri1',
'path_key2' => 'attri1',
),
'a5' => array(
'path_key1' => 'attrib2',
'path_key2' => 'attrib2',
),
'a6' => array(
'path_key1' => 'diagnosis',
'path_key2' => 'diagnosis',
),
'a7' => array(
'path_key1' => 'meds',
'path_key2' => 'meds',
),
'a8' => array(
'path_key1' => 'risk1',
'path_key2' => 'risk1',
),
'a9' => array(
'path_key1' => 'risk2',
'path_key2' => 'risk2',
),
'a0' => array(
'path_key1' => 'visits',
'path_key2' => 'visits',
),
);
}

在 PHP 中,通过执行以下操作来访问数据:

$key = 'a9';
$pathKey2Value = $this->channels[$key]['path_key2'];

我开始实现 Map<String, Map<String, String>> Java中的成员,但它似乎过于复杂,以及定义 A1 , A2等类(class)。

在 Java 中完成同样的事情最优雅的方法是什么?

最佳答案

enum An {a1, a2, a3, a0}

class PathKeys {
String pathKey1;
String pathKey2;

PathKeys(String pathKey1, String pathKey2) {
this.pathKey1 = pathKey1;
this.pathKey2 = pathKey2;
}
}

Map<An, PathKeys> channels = new EnumMap<>(An.class);

void put(An an, PathKeys pk) {
channels.put(an, pk);
}

put(An.valueOf("a1"), new PathKeys("provider_offices", "provider_offices"));

String s = channels.get(An.a1).pathKey1;
  • 枚举是类型安全的。
  • EnumMap 实际上是一个数组。
  • 我不确定 PathKeys,但它看起来像是其自身结构的固定字段。

从 Perl、JSON、简单的 PHP 转换为像 Java 这样的类型语言应该利用足够的数据结构和类型信息。之后减少限制会更容易,但暂时有助于发现业务逻辑中的错误。因此,将 Map+String 泛化留到最后。

关于java - 在 Java 中定义 Map<String, Map<String, String>> 映射的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27230509/

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