2014-04-10 82 views
0

的的ArrayListHashMap的映射值稍微偏离

This is jumblesOrdered: [act, aprt, art, dgo, fgor, opst] 

This is jumbles: [arpt, atc, atr, gdo, grof, otsp] 

输出:

This is jumbleWordHM: {opst=otsp, art=atr, fgor=grof, dgo=gdo, aprt=atc, act=arpt} 

代码的HashMap:

 for (int i = 0; i < jumblesOrdered.size(); i++) { 
     String word = jumbles.get(i); 
     String sortedWord = jumblesOrdered.get(i); 

     if (jumbleWordHM.get(sortedWord) == null) { 
      jumbleWordHM.put(sortedWord, word); 
     } else { 
      jumbleWordHM.put(sortedWord, jumbleWordHM.get(sortedWord) + " " 
        + word); 
     } 

    } 

我对jumbleWordHM输出稍微偏离。输出应该是:

This is jumbleWordHM: {opst=otsp, art=atr, fgor=grof, dgo=gdo, ****aprt=arpt, ****act=atc} 

* *表示需要进行切换的。

+0

为什么你首先在jumblesOrdered和'arpt'中首先执行'jumbles'操作? – user2357112

+0

jumblesOrdered是每个字母中每个字母的字母顺序 – user3287300

+1

'act'不是按照字母顺序放置'arpt'的方式。 – user2357112

回答

1

你的第一个ArrayList的开头:

  • [行为,APRT,...

你的第二个ArrayList的开头:

  • [ARPT,ATC,...

您正在按顺序获取元素,所以它是将使用第一个列表的第一个元素作为关键字,将第二个列表的第一个元素作为值放入地图中。

如果您不能保证顺序,您将需要添加代码来查找包含相同字母的字符串。