【发布时间】:2017-07-09 03:27:43
【问题描述】:
我有哈希图,它的键是字符串,值存储为列表。
Map<String,List<Integer>> posmap = new HashMap<>();
因为我在同一个键下有多个值。 因此,例如我有 4 个键和值是:
[1681, 3523]
[276, 489]
[1527, 2865]
[300]
我还有另一个 treeList 包含这些排序后的值。我想要做的是(并询问);
Iterator<Integer> itr=myTreeSet.iterator();
while(itr.hasNext())
{
int check = itr.next();
for(Object value : map2.entrySet())
{
//System.out.println("Value is :" + value);
}
}
我想用我的 Hashmap entrySet 来检查 itr,如果等于则返回 hashmap key。上面的代码将 entrySet 作为数组返回。简述如何检查itr属于hashmap的entrySet,属于哪个key。
我将 map1 和 map2 作为参数
static void game(Map map1, Map map2, Hero h, HashSet< Integer> hash)
对不起各位。我没有说清楚我想所以你很困惑。我首先在 main func 中定义这个映射:
Map<String, Enemy> enemymap = new HashMap<>();
Map<String,List<Integer>> posmap = new HashMap<>();
我也将它们填充到 main func 中。填写完后,我将它们发送到有问题的功能游戏中。 posmap 是 map2。所以我指的是posmap。很抱歉造成混乱。 func的完整代码。
static void game(Map map1, Map map2, Hero h, HashSet< Integer> hash)
{
TreeSet<Integer> myTreeSet = new TreeSet<>(); // For sorting min to max-for alignment
myTreeSet.addAll(myHashset);
System.out.println(myTreeSet);
String start = "Micheal started travel with" + " " + h.getHealth() + " " + "HP!";
Iterator<Integer> itr=myTreeSet.iterator();
while(itr.hasNext())
{
int check = itr.next();
/* for(Map.Entry<String, List<Integer>> entry : map2.entrySet())
{
if(entry.getValue() != null && entry.getValue().contains(check))
System.out.println("The key " + entry.getKey() + "contains the treeset value " + check);
} -/
}
}
从主函数发送为:
game(enemymap, posmap , hero, myHashset);
【问题讨论】:
-
我不确定我是否理解这个问题,因为它太草率了。
posmap是否应该与map2相同?但是,如果您想测试一个整数是否在映射中的值列表之一中,您需要查看所有值并使用类似List.contains的内容。不要说Object value,说Map.Entry<String,List<Integer>> value。否则您将无法检索这些值。 -
我认为您的澄清使事情变得不太清楚。此外,在参数列表中使用原始类型(如
Map,而不是Map<String,List<Integer>>)将难以编写代码来做正确的事情,因为编译器不知道您的键是字符串而您的值是列表。
标签: java list arraylist data-structures hashmap