我正在使用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");
}}
有什么样的样品吗?非常感谢。
我相信以下可能是一个解决方案(注意它适合忽略多个单词(字符串)(跳过插入))
这利用了一种方法,即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;
}