从数据库中,表I选择一列并保存到数组中。但是在列中有一些空值。现在我想从数组中删除那些空值。我怎么办?
以下是我从数据库获取数组列表的代码:
public ArrayList<ChapterInfo> getAllResult(String tableName){
ArrayList<ChapterInfo> arrayList = new ArrayList<>();
String arg = "select "+tableName+" from "+tableName+";";
Cursor cursor = this.database.rawQuery(arg,null);
cursor.moveToFirst();
if (!cursor.isAfterLast()){
do {
ChapterInfo chapterInfo = new ChapterInfo(
cursor.getString(cursor.getColumnIndex(tableName)));
arrayList.add(chapterInfo);
} while (cursor.moveToNext());
}
cursor.close();
return arrayList;
}`
代码工作正常。但是这个表中有一些空值。但是该空行不可删除,因为有另一列该列已满。
答案 0 :(得分:0)
为什么不简单地检查字符串是否为空,然后仅在字符串不为空时才将其添加到ArrayList。
String stringTemp = cursor.getString(cursor.getColumnIndex(tableName))
if(stringTemp != null && !stringTemp.isEmpty())
arrayList.add(chapterInfo);
答案 1 :(得分:0)
尝试使用arrayList.remove(element);
,其中element是要删除的arraylist的索引
OR
您可以在arraylist中添加数据之前添加空检查,如:
do {
String tableData = cursor.getString(cursor.getColumnIndex(tableName));
if (tableData.trim().isEmpty()){
continue;
}
else{
ChapterInfo chapterInfo = new ChapterInfo(tableData);
arrayList.add(chapterInfo);
}
} while (cursor.moveToNext());
答案 2 :(得分:0)
您可以为此创建自己的Predicate
:
package question_40387644;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class Test {
public static Predicate<String> isNotNullAndNotEmpty = s -> s != null && !s.isEmpty();
public static void main(String[] args) {
List<String> someValues = new ArrayList<>();
someValues.add("value A");
someValues.add("value B");
someValues.add(" ");
someValues.add("");
System.out.println("List size:");
System.out.println(someValues.size());
System.out.println("Non-empty values:");
someValues.stream().filter(isNotNullAndNotEmpty).forEach(s -> System.out.println("s = " + s));
System.out.println("Empty values:");
System.out.println(someValues.stream().filter(String::isEmpty).collect(Collectors.toList()).size());
}
}
输出:
List size:
4
Non-empty values:
s = value A
s = value B
s =
Empty values:
1