配列比較とか。

DBにあるレコード群と手元の配列を比較、DBにない値のみを配列で返すコードを記述。

多分もっとうまい方法があるんだよな…
動作としては多分間違ってないけどfor文いっぱいで辛い。

ところでandroidのCursorクラスにhasNextがないのって微妙だと思うんだけどどうよ

    /**
     * @param name_id_array 比較する配列
     * @return DBテーブルと比較、テーブルにない値のみを取り出した配列を返す、
     */
    public ArrayList<String> compareTable(
        ArrayList<String> name_id_array_list) {
        String where_in = "where " + PKEYCOL_NAME +
            " in (";
        String[] name_id_array = new String[name_id_array_list
            .size()];
        for (int i = 0; i < name_id_array_list.size(); i++) {
            name_id_array[i] = name_id_array_list.get(i);
            where_in += "?,";
        }
        where_in = where_in.substring(0,
            where_in.length() - 1) +
            ");";

        Cursor c = readableDB.rawQuery("select * from " +
            TABLE_NAME + where_in, name_id_array);

        String[] exist_id = new String[c.getCount()];
        c.moveToFirst();
        for (int i = 0; i < c.getCount(); i++) {
            exist_id[i] = c.getString(0);
            c.moveToNext();
        }

        Arrays.sort(exist_id);
        Arrays.sort(name_id_array);

        int max_int = exist_id.length;

        ArrayList<String> return_arraylist = new ArrayList<String>();

        for (int i = max_int; i > 0; i--) {
            for (int j = name_id_array.length; j > 0; j--) {
                if (exist_id[i].equals(name_id_array[j])) {
                    return_arraylist.add(exist_id[i]);
                    break;
                }
            }
            max_int--;
        }
        return return_arraylist;
    }