从数组中删除空值

时间:2016-11-02 18:52:26

标签: java android sqlite arraylist

从数据库中,表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;
}`

代码工作正常。但是这个表中有一些空值。但是该空行不可删除,因为有另一列该列已满。

3 个答案:

答案 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