Android SQLite忽略添加,如果WorldList存在于ArrayList中

问题描述 投票:1回答:1

我正在使用Android SQLite添加一些ArrayList。我想这样做:如果有我将在列表中选择的世界和任何地方,我想阻止添加这个。

例如;如果在ArrayList中存在“Duck U”,我想忽略添加数据库吧。

我累了list.contains("Duck u");但不起作用。

我添加到数据库的代码:

public void HistoryADD(ArrayList<String> full, String owner){
    int size = full.size();
    SQLiteDatabase db = getWritableDatabase();
    try{
        for (int i = 0; i < size ; i++){
            ContentValues cv = new ContentValues();
            cv.put(FULL, full.get(i));
            cv.put(OWNER, owner);
            Log.d("Added ",""+ cv);
            db.insertOrThrow(TABLE_NAME, null, cv);
        }
        db.close();
    }catch (Exception e){
        System.out.println("Could not added");
    }}

有什么样的样品吗?非常感谢。

android sqlite
1个回答
0
投票

我相信以下可能是一个解决方案(注意它适合忽略多个单词(字符串)(跳过插入))

这利用了一种方法,即ifHaystackContainsNeedle,它将搜索ArrayList(Haystack)与另一个ArrayList(Needle)(因此需要忽略多个字符串)。如果在大海捞针中找到任何针,则此方法返回true。因此,如果返回true,则可以继续执行for循环,从而跳过

public void HistoryADD(ArrayList<String> full, String owner,ArrayList<String> ignore){
    int size = full.size();
    SQLiteDatabase db = getWritableDatabase();
    try{
        for (int i = 0; i < size ; i++){
            //<<<<<<<<<< START OF ADDED TEST
            if (ifHaystackContainsNeedle,owner,ignore) {
                Log.d("Skipped ","Owner " + get(i) + " was skipped.");
                continue;
            }
            //<<<<<<<<<< END OF ADDED TEST
            ContentValues cv = new ContentValues();
            cv.put(FULL, full.get(i));
            cv.put(OWNER, owner);
            Log.d("Added ",""+ cv);
            db.insertOrThrow(TABLE_NAME, null, cv);
        }
        db.close();
    }catch (Exception e){
        System.out.println("Could not added");
    }}


//<<<<<<<<<< NEW METHOD
private boolean ifHaystackContainsNeedle(ArrayList<String> haystack, ArrayList<String> needle) {
    for (String s: haystack) {
        for (String s2: needle) {
            if (s.contains(s2)) {
                return true;
            }
        }
    }
    return false;
}
  • 请注意,这是原则上的代码,并且已经过全面测试,因此可能包含一些错误。
© www.soinside.com 2019 - 2024. All rights reserved.