Thi*_*mer 2 java collections hashmap map linkedhashmap
基本上,我有两个哈希图,一个包含以下值:
rId33=image23
rId32=image22
rId37=image2
Run Code Online (Sandbox Code Playgroud)
而另一个包含这些数据:
{image2.jpeg=C:\Documents and Settings\image2.jpeg, image22.jpeg=C:\Documents and Settings\image22.jpeg, image23.jpeg=C:\Documents and Settings\image23.jpeg}
Run Code Online (Sandbox Code Playgroud)
我基本上希望能够遍历第一个地图,找到钥匙的匹配,如果找到匹配,获取相关值,然后查看第二个地图,找到钥匙中的匹配,然后拉出关联value(表示文件路径).
我正在考虑做这样的事情(以下简化)......
String val2 = "rId33";
for (String rID: map.keySet())
{
if (rID.contains(val2))
{
//enter code here
}
}
Run Code Online (Sandbox Code Playgroud)
我正在研究像.getValue之类的东西可用的方法,但我不完全确定如何做到这一点.任何帮助,将不胜感激.提前感谢您的回复.
在Bozho的帮助下编辑代码
else if ("v:imagedata".equals(qName) && headingCount > 0)
{
val2 = attributes.getValue("r:id");
String rID = imageMap.get(val2);
String path = imageLocation.get(rID + ".jpeg");
for (String rels: imageMap.keySet())
{
if (rels.contains(val2))
{
inImage = true;
image docImage = new image();
imageCount++;
docImage.setRelID(val2);
docImage.setPath(path);
addImage(docImage);
}
}
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 10
从我看到你不需要迭代.只是:
String value1 = map1.get(key1);
if (value1 != null) {
String path = map2.get(value1 + ".jpeg");
}
Run Code Online (Sandbox Code Playgroud)
如果您不总是知道它是否value1 + ".jpeg",但您只知道键以第一个值开始,那么您可以使用以下内容迭代第二个映射:
for (Map.Entry<String, String> entry : map2.entrySet()) {
String key2 = entry.getKey();
String value2 = entry.getValue();
if (key.startsWith(value1)) {
return value2;
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,第一个代码片段是O(1)(两个操作都需要恒定时间),而第二个代码片段是O(n)
并回答标题中提出的问题:
获取两个映射的迭代器,it1.next()并it2.next()在while循环中使用.如果任何地图没有更多元素(it.hasNext()) - 中断.
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |