将两个ArrayList转换为TreeMap

时间:2014-04-08 15:24:07

标签: java

我一直在搜索StackOverflow以获得有关此问题的答案。

假设我创建了两个数组列表,

arraylist1持有字符串 arraylist2持有整数。

注意 - 我在这两个arraylists中添加了东西。每个指数的值都与另一个值相关。

含义。让我们说arraylist1 =“Name”的索引1。 arraylist2 = 3的索引1,它们是相关的,因为我想将事物放入TreeMap(为了按键排序),以便树图放入值(“Name”,3)。

我的问题 -

TreeMap<String, Integer> mymap = new TreeMap<String, Integer>();
for(String s : arraylist1) {
     for(Integer v : arraylist2) {
          mymap.put(s, v); 

问题是如果我添加了一堆随机的东西进行测试,

    arraylist1.add("h");
    arraylist1.add("i");
    arraylist1.add("e");
    arraylist2.add(1);
    arraylist2.add(3);
    arraylist2.add(2);

我做了for循环,我的结果将会出现......

Key e Value: 2
Key h Value: 2
Key i Value: 2

这解决了按键排序的问题。但是,问题是只有Integer arraylist中的最后一个值arraylist2被放入TreeMap中。

2 个答案:

答案 0 :(得分:4)

您不想同时遍历两个列表 吗?

for (int i = 0; i < list.size(); i++) {
   map.put(list1.get(i), list2.get(i));
}

就目前而言,您将为每个键迭代第二个映射,并插入第二个列表的值。由于地图每个键只保存一个值,因此地图会在每个键的第二个列表中生成最终值。

顺便说一句,如果这两个值是内在联系的,也许创建(或使用an existingPair对象从一开始就存储它们。使用标准映射的问题是每个键只能存储一个值。例如您无法存储(A,B)(A,C)

答案 1 :(得分:0)

好吧,我在你删除它之前在你删除的问题中输入了这个,但是在你删除它之后没有完成:

我不确定我是否完全理解你的问题,但请考虑:

  • 创建一个负责游戏逻辑的游戏类。
  • 创建与游戏互动的玩家对象。
  • 当玩家想要移动时,他会调用Game的move(Piece piece, Position position)方法,但需要参数。
  • 让此方法返回一个布尔值,如果移动有效则返回true;否则返回false ...