Заменить нулевые значения в Arraylist - PullRequest
1 голос
/ 14 октября 2019

Я пытаюсь заменить нулевые значения в моем arrayList, но получаю исключение

java.lang.NullPointerException

Я пробовал другой способ:

Data.replaceAll(s -> s.replaceAll(" null", "")); 

И:

for(int x = 0; x < Data.size(); x++)
          {
                if(Data.get(x).equals("null") == true)
                {
                    Data.set(x, "");
                }
          }

И:

for(int x = 0; x < Data.size(); x++)
          {
                if(Data.get(x).equals(null) == true)
                {
                    Data.set(x, "");
                }
          }

но исключением является throw java.lang.NullPointerException

Вот пример моего arrayList:

[0050568D6268, null, A001, A, T3, Principal, COL - Test, 4-Lock, Com. On Stage, Social, RDC, null, null, null, null, -1, null, -1, 0, -1, 99, 53]

Я ищулюбая помощь спасибо.

Ответы [ 4 ]

3 голосов
/ 14 октября 2019

Значения в вашем списке кажутся действительными null с, а не строками с "null". Вы можете заменить их на "" на:

data.replaceAll(t -> Objects.isNull(t) ? "" : t);

Вы можете удалить их на:

data.removeIf(Objects::isNull)
3 голосов
/ 14 октября 2019

Я думаю, что вы хотите использовать map() здесь:

// given list data
data = data.stream()
    .map(s -> Objects.isNull(s) ? "" : s)
    .collect(Collectors.toList());

Это вернет список, идентичный вводу, за исключением того, что все значения null заменены пустой строкой.

2 голосов
/ 14 октября 2019

Добавление нескольких базовых вещей.

Мы не можем вызвать какой-либо метод для нулевого объекта. Это является причиной получения исключения нулевого указателя.

Ниже строки выдается исключение нулевого указателя, потому что вызывается равно метод на нулевом объекте не разрешен в java.

Data.get (x). равно ("null")

Так что замена вышес помощью ниже решит проблему.

Data.get (x) == null

Нет необходимости проводить дополнительное сравнение с == true.

2 голосов
/ 14 октября 2019

в этой строке вы сравниваете значение в позиции x со строкой null, а не «с нулевым значением»:

if(Data.get(x).equals("null") == true)

Замените это сравнение на:

if(Data.get(x) == null)
...