我有一个在表中使用test_id_val配置的tag_id列表。我使用以下查询检索数据
Select test_id_val , tag_id from p_details
对于一个简单的情况,我宁愿使用哈希映射来存储键值对并检索数据,但在我的情况下,test_id_val可以接受空值
如需考虑以下结构:
1. APP TR202
2. APP TR204
3. APP TR205
4.NULL TR206
5.NULL TR207
6.NULL SM504
7.NULL SM505
所以我将有一个tag_ids值列表映射到test_id键,该键可以为null或包含值。我的要求是将test_id键映射到tag_ids列表
有没有具体的方法来做到这一点?
感谢您的帮助和时间..
答案 0 :(得分:1)
您可以考虑使用com.google.common.collect.Multimap
的一些实现。
您可以将多个值与一个键关联,然后使用map.get(key)
方法将它们作为集合检索。在你的情况下:
Multimap<String, String> mmap = HashMultimap.create();
mmap.put("APP", "TR202");
mmap.put("APP", "TR204");
mmap.put("APP", "TR205");
mmap.put(null, "TR206");
mmap.put(null, "TR207");
mmap.put(null, "SM504");
mmap.put(null, "SM505");
for (String key : mmap.keySet()) {
for (String value : mmap.get(key)) {
System.out.println(key + ": " + value);
}
}
打印:
null: SM505
null: SM504
null: TR207
null: TR206
APP: TR202
APP: TR205
APP: TR204
答案 1 :(得分:0)
您可以使用ArrayList
存储test_id_val
。然后在HashMap
中,将tag_id
作为关键字并将ArrayList的索引存储为test_id_val
,作为HashMap
的值。 ArrayList允许空值,因此您可以轻松存储特定tag_id
的空值。像这样......
KEY VALUE ArrayList
TR202 1 1--> APP
TR204 2 2--> APP
TR205 3 3--> APP
TR206 4 4--> NULL
TR207 5 5--> NULL
答案 2 :(得分:0)
您可能想重新考虑这是否是您拥有的最佳数据库架构设计,但如果您选择坚持使用它,请为test_id_val
创建一个包装类,您可以在其中指定是否真的是{{1}通过null
:
boolean
然后,您可以实例化private class TestIdVal {
String test_id_val;
boolean isNull;
}
个对象以用作地图的键。我不建议使用new TestIdVal()
列表作为密钥,因为这似乎不能正确地镜像您的架构。看来你正试图做test_id_val =&gt; tag_id列表。