2012-04-04 75 views
0

我试图在ArrayList中保存一组ID我然后想要比较当前值与所述Arraylist的内容,但它不似乎为我工作。Java(Android):比较Arraylist内容到字符串或Int不工作

我的两种方法都不起作用,代码片段c.getString(0)正在从SQLite数据库中提取数字ID列,并且allProgramIds包含相同的ID。

方法1.直接比较(不匹配,只是忽略)

   for(int i=0;i<allProgramIds.size();i++) { 
         Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds); 

         if(allProgramIds.get(i) == c.getString(0)) { 
          exist=true; 
          Log.w(TAG, "Found one:" + c.getString(0)); 
          break; 
         } 

       } 

方法2.铸造比较之前,INT(这会导致崩溃)

   for(int i=0;i<allProgramIds.size();i++) { 
         Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds); 

         if(Integer.toString((Integer) allProgramIds.get(i)) == c.getString(0)) { 
          exist=true; 
          Log.w(TAG, "Found one:" + c.getString(0)); 
          break; 
         } 

       } 

这里是一个日志输出

Log.w(TAG, "Looping - looking for:" + c.getString(0) + ", Holding:"+allProgramIds); 

04-04 10:43:42.805: W/MainProgram(2045): Looping - looking for:73, Holding:[68, 69, 70, 71, 72, 73, 74, 75, 76, 68, 69, 70, 71, 72] 

感谢

回答

4

使用equalsString比较,而不是==。上的对象检查引用相等

if(allProgramIds.get(i).equals(c.getString(0))) 
// ... 

==,不内容相等(即,它的指针进行比较,以在对象被存储的存储器位置)。

+0

ahha!真棒。那天我也用了,然后完全忘了它。非常感谢你muchski budski。 – Purplemonkey 2012-04-04 10:02:15