我遇到了一个我以前没有处理过的问题。我正在为java中的数据库编写一个补丁,它基本上转换存储在某些行中的数据。为了做到这一点,我有一个转换表,告诉我什么值变成了什么。
例如,如果我读入“RC”、“AC”、“GH”-> 将值更新为“T1”。(这些只是随机示例,它基本上是将一个字符串转换为另一个字符串。)
我需要一种存储这些转换的好方法。我在想一个哈希图:KEY,VALUE: (RC,T1) (AC,T1) (GH,T1) 等等等等。
现在,有几十个。补丁初始化时填充此哈希图的好方法是什么?
我遇到了一个我以前没有处理过的问题。我正在为java中的数据库编写一个补丁,它基本上转换存储在某些行中的数据。为了做到这一点,我有一个转换表,告诉我什么值变成了什么。
例如,如果我读入“RC”、“AC”、“GH”-> 将值更新为“T1”。(这些只是随机示例,它基本上是将一个字符串转换为另一个字符串。)
我需要一种存储这些转换的好方法。我在想一个哈希图:KEY,VALUE: (RC,T1) (AC,T1) (GH,T1) 等等等等。
现在,有几十个。补丁初始化时填充此哈希图的好方法是什么?
我会在设置 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");
}};
使用 Java 11,您可以使用Map.of("RC", "T1", "AC", "T1");
可能是其他方式,ListRC,AC,GH
作为 value,T1 作为 hashmap 的 key,这样可以减少 map 中的条目数。
您可以使用apache commons 中的PropertiesConfiguration。
value 可以包含值分隔符,然后将被解释为标记列表。默认值分隔符是逗号','。所以下面的属性定义
key = This property, has multiple, values