java中的映射条目键

时间:2013-03-30 18:01:40

标签: java map equals

我正在尝试调试我在脚本上的问题,我刚接触Java我认为这是最简单的事情,但我需要了解。这个:

for( Map.Entry<String,int[]> entry : this.indexMap.entrySet())
{
     if( !entry.getKey().equals("nickname"))
     {
         System.out.print("'"+ entry.getKey() +"' contains "+ entry.getKey().length() +" chars");
         System.out.print("'"+ name +"' contains "+ name.length() +" chars");
     }
     else if( entry.getKey().trim().equals("nickname") )
     {
         System.out.print("Yes are sames");
     } 
}

对于String name =“nickname”,显示:

18:56:15 [INFOS] 'nickname' contains 94 chars

18:56:15 [INFOS] 'nickname' contains 8 chars

我正在努力理解这一点。

问题是entry.getKey()返回与我的字符串名称相同的东西,但不是真的相同。在第一次测试中,我们看到两个变量是不同的,因此打印已经完成,但是两个变量具有相同的值,并且长度不同。在else-if中,我试图删除空格但没有打印,所以这些94个字符在哪里?

https://code.google.com/p/imdbparsers/source/browse/trunk/imdb+parsers/src/imdb/parsers/xmltosql/NamedParameterStatement.java?r=6

代码,方法是否

private String parse(String query) 

private int[] getIndexes(String name)

第161和89行 我在我的这个for循环只是为了调试

 int[] indexes = (int[]) indexMap.get(name);

返回始终为null

查询字符串是:

SELECT COUNT(`account_id`) AS `total` FROM `game_accounts` WHERE `nickname`=:nickname

2 个答案:

答案 0 :(得分:1)

之间的区别
entry.getKey().equals("nickname")

entry.getKey().trim().equals("nickname")

trim()

第一个考虑空格而第二个不考虑。

这是因为它们是地图上的循环:找到“坏”键......

答案 1 :(得分:0)

我认为,如果你改变你的if条款,你可能会得到一些更像你期望的东西,虽然你有点不清楚你在问什么。将键作为if块中的第一个子句进行比较会使代码更简单。

if( entry.getKey().trim().equals("nickname") ) 
{
     System.out.print("Yes are sames");
}
else
{
     System.out.print("'"+ entry.getKey() +"' contains "+ entry.getKey().length() +" chars");
     System.out.print("'"+ name +"' contains "+ name.length() +" chars");
}