16

我遇到了一个我以前没有处理过的问题。我正在为java中的数据库编写一个补丁,它基本上转换存储在某些行中的数据。为了做到这一点,我有一个转换表,告诉我什么值变成了什么。

例如,如果我读入“RC”、“AC”、“GH”-> 将值更新为“T1”。(这些只是随机示例,它基本上是将一个字符串转换为另一个字符串。)

我需要一种存储这些转换的好方法。我在想一个哈希图:KEY,VALUE: (RC,T1) (AC,T1) (GH,T1) 等等等等。

现在,有几十个。补丁初始化时填充此哈希图的好方法是什么?

4

4 回答 4

35

我会在设置 HashMap 时进行初始化

例如

private static final Map<String, String> m = new HashMap<String, String>() {{
    put("RC", "T1");
    put("AC", "T1");
}};

然后你会确保所有的东西都在你的代码中设置好。

我认为@Nambari 提出了一个很好的观点,尽管它可能将值作为一个列表而不仅仅是一个字符串。不过,这确实会交换您的键和值。

例如

 private static final Map<String, List<String>> m = new HashMap<String, List<String>>() {{
    put("T1", Arrays.asList("RC", "AC");
}};
于 2012-09-06T18:32:51.440 回答
1

使用 Java 11,您可以使用Map.of("RC", "T1", "AC", "T1");

于 2021-08-27T14:44:48.583 回答
0

可能是其他方式,ListRC,AC,GH作为 value,T1 作为 hashmap 的 key,这样可以减少 map 中的条目数。

于 2012-09-06T18:30:30.867 回答
0

您可以使用apache commons 中的PropertiesConfiguration

value 可以包含值分隔符,然后将被解释为标记列表。默认值分隔符是逗号','。所以下面的属性定义

key = This property, has multiple, values
于 2012-09-06T18:55:06.673 回答