java - 将数据库表中的多个键值对添加到 HashMap

标签 java

我在下面定义了三个数据库表,括号中提到了列名称:

Product (ProductID, Price, Last_Updated)

User (UserID, Name, Address, LocationID, Last_Updated)

Location (LocationID, Loc_Name, Last_Updated)

我想使用 Java (JDK 1.5) 将所有表的所有列名添加到一个集合中,就像 HashMap 一样。

我的问题是,当输入重复的键时,先前的值将被覆盖。

我添加它们的方式如下:

Map<String, String> map = new HashMap<String, String>();

map.add("ProductID", "Save the Product ID");
// ...
map.add("Last_Updated", "Save Last_Updated of Product table");
// ...
map.add("LocationID", "Save the LocationID");
// ...
map.add("Last_Updated", "Save Last_Updated of User table.");

现在,键Last_Updated已被新值保存用户表的Last_Updated覆盖。

但我想要这两个值。

有没有办法在不使用多个HashMap结构的情况下实现这一点?

最佳答案

如果您想添加具有相同 key 的项目,那么这将是一个可能的解决方案

Map<String, List<String>> map = new HashMap<String, List<String>>();

添加元素时:

public void add(String key, String value) {
    if(!map.containsKey(key)) {
        map.put(key, new ArrayList<String>());
    }
    map.get(key).add(value);
}

当你想访问一个元素时,通过maps get()函数你将得到一个字符串列表,其中是键的值。

但是,最好使用 Multimap 实现:

Guava :

Multimap - 具体实现可以在javadoc中查看。

Multimap<String, String> map = ArrayListMultimap.create();
map.put("a", "Apple");
map.put("a", "Almonds");
Collection<String> valuesForA = map.get("a"); // List of ("Apple", "Almonds")

Apache 共享

MultiMap - javadoc中的示例和具体实现

关于java - 将数据库表中的多个键值对添加到 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864224/

相关文章:

java - 上传到 S3 的单元测试

java - JSON 格式说明换行符

java - 组织.postgresql.util.PSQLException : ERROR: relation "app_user" does not exist

java - 为什么调度任务执行固定速率中的代码不起作用?

java - List<String> 的列表到字符串有序的字符串数组

java - webapp 内的自定义类加载器、JSP 执行和资源检索

java - 在 NetBeans 上的 JPanel 中用鼠标绘制线条

java - 使用indexOf搜索包含某些字母的字符串

java - 用Java计算组合?

java.lang.StringIndexOutOfBoundsException : while using charAt function