Java(Android):将Arraylist内容与String或Int进行比较不起作用

时间:2012-04-04 09:46:04

标签: java arraylist

我正在尝试在ArrayList中保存一组ID然后我想将当前值与所述Arraylist的内容进行比较,但它似乎对我不起作用。

我的方法都不起作用,代码片段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]

感谢

1 个答案:

答案 0 :(得分:4)

使用equals进行String比较,而不是==

if(allProgramIds.get(i).equals(c.getString(0)))
// ...
对象上的

==检查引用相等性,而不是内容相等性(即它将指针与存储对象的内存位置进行比较)。