用预定义值填充hashmap(java)

用预定义值填充hashmap(java),java,hashmap,auto-populating,Java,Hashmap,Auto Populating,我遇到了一个以前从未处理过的问题。我正在用java编写一个数据库补丁,它基本上转换存储在特定行中的数据。为了做到这一点,我有一个转换表,告诉我什么值变成什么 例如,如果我读入“RC”、“AC”、“GH”->将值更新为“T1”。(这些只是随机示例,基本上是将一个字符串转换为另一个字符串。) 我需要一种存储这些转换的好方法。我在想一个hashmap: 键,值:(RC,T1)(AC,T1)(GH,T1)等等 现在,有几十个这样的。当补丁初始化时,有什么好的干净方法填充这个hashmap 可能是另一种方

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

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

我需要一种存储这些转换的好方法。我在想一个hashmap: 键,值:(RC,T1)(AC,T1)(GH,T1)等等


现在,有几十个这样的。当补丁初始化时,有什么好的干净方法填充这个hashmap

可能是另一种方式,将
RC、AC、GH
列为hashmap的值,将T1列为键,这样可以减少map中的条目数。

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

比如说

private static final Map<String, String> m = new HashMap<String, String>() {{
    put("RC", "T1");
    put("AC", "T1");
}};
private静态最终映射m=newhashmap(){{
put(“RC”、“T1”);
put(“AC”、“T1”);
}};
然后你要确保所有的东西都在你的代码中设置好了

我认为@Nambari有一个很好的观点,也许它的值是一个列表,而不仅仅是一个字符串。不过,这会交换键和值

乙二醇

private静态最终映射m=newhashmap(){{
put(“T1”,Arrays.asList(“RC”,“AC”);
}};
您可以从apache commons使用

值可以包含值分隔符,然后将其解释为令牌列表。默认值分隔符为逗号“,”。因此,以下属性定义


但是,在这样的结构中查找的复杂性不会有任何好处-那个么,当查找“RC”的替换项时,您将如何搜索这样的映射呢?我同意,若您的键较少(如T1、T2等),这是一种简单的方法。若键较少,则可以获得entrySet()然后玩它。如果键的数量也很高,那么查找时间就会很长。同样,这是一种折衷,一个地方的简单会在另一个地方造成复杂性。谢谢!这就是我所想的(你的第一个例子)。我希望有一个真正整洁的方法来做这件事,但我想我必须下来弄脏。非常感谢RNJ的确认。@user1652875我认为在声明的同一位置进行初始化会稍微整洁一些。然后你肯定知道地图包含一些数据。警告:不要使用“双括号初始值设定项”,它创建了一个新的
HashMap
子类,这可能会导致性能下降。其次,这让读者感到困惑,因为这段代码表明存在一些“双括号初始值设定项”构造,而没有。
 private static final Map<String, List<String>> m = new HashMap<String, List<String>>() {{
    put("T1", Arrays.asList("RC", "AC");
}};
key = This property, has multiple, values