Удалить значение Null из массива String в java

Как удалить значение null из массива String в java?

String[] firstArray = {"test1","","test2","test4",""}; 

Мне нужен «firstArray» без нулевых (пустых) значений, подобных этому

 String[] firstArray = {"test1","test2","test4"}; 

Если вы хотите избежать ошибок fencepost и избегать перемещения и удаления элементов в массиве, вот несколько подробное решение, которое использует List :

 import java.util.ArrayList; import java.util.List; public class RemoveNullValue { public static void main( String args[] ) { String[] firstArray = {"test1", "", "test2", "test4", "", null}; List list = new ArrayList(); for(String s : firstArray) { if(s != null && s.length() > 0) { list.add(s); } } firstArray = list.toArray(new String[list.size()]); } } 

Добавлено значение null чтобы показать разницу между пустым экземпляром String ( "" ) и значением null .

Поскольку этот ответ составляет около 4,5 лет, я добавляю пример Java 8:

 import java.util.Arrays; import java.util.stream.Collectors; public class RemoveNullValue { public static void main( String args[] ) { String[] firstArray = {"test1", "", "test2", "test4", "", null}; firstArray = Arrays.stream(firstArray) .filter(s -> (s != null && s.length() > 0)) .toArray(String[]::new); } } 

Если вы действительно хотите добавлять / удалять элементы из массива, могу ли я предложить List вместо этого?

 String[] firstArray = {"test1","","test2","test4",""}; ArrayList list = new ArrayList(); for (String s : firstArray) if (!s.equals("")) list.add(s); 

Затем, если вам действительно нужно вернуть это в массив:

 firstArray = list.toArray(new String[list.size()]); 

Использование гуавской библиотеки Google

 String[] firstArray = {"test1","","test2","test4","",null}; Iterable st=Iterables.filter(Arrays.asList(firstArray),new Predicate() { @Override public boolean apply(String arg0) { if(arg0==null) //avoid null strings return false; if(arg0.length()==0) //avoid empty strings return false; return true; // else true } }); 

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

 String[] array = {"abc", "def", null, "g", null}; // Your array String[] refinedArray = new String[array.length]; // A temporary placeholder array int count = -1; for(String s : array) { if(s != null) { // Skips over null values. Add "|| "".equals(s)" if you want to exclude empty strings refinedArray[++count] = s; // Increments count and sets a value in the refined array } } // Returns an array with the same data but refits it to a new length array = Arrays.copyOf(refinedArray, count + 1); 

Кажется, никто не упомянул об использовании метода nonNull который также может использоваться с streams в Java 8 для удаления null (но не пустого) как:

 String[] origArray = {"Apple", "", "Cat", "Dog", "", null}; String[] cleanedArray = Arrays.stream(firstArray).filter(Objects::nonNull).toArray(String[]::new); System.out.println(Arrays.toString(origArray)); System.out.println(Arrays.toString(cleanedArray)); 

И выход:

[Apple,, Cat, Dog,, null]

[Apple,, Cat, Dog,]

Если мы хотим включить пустые и тогда мы можем определить метод утилиты (в classе Utils (скажем)):

 public static boolean isEmpty(String string) { return (string != null && !string.isEmpty()); } 

И затем используйте его для фильтрации элементов как:

 Arrays.stream(firstArray).filter(Utils::isEmpty).toArray(String[]::new); 

Я считаю, что Apache common также предоставляет утилиту StringUtils.isNotEmpty которая также может быть использована.

Это строки нулевой длины, а не ноль. Но если вы хотите удалить их:

 firstArray[0] refers to the first element firstArray[1] refers to the second element 

Вы можете перенести второй в первый так:

 firstArray[0] = firstArray[1] 

Если вы сделали это для элементов [1,2], затем [2,3] и т. Д., Вы в конечном итоге переместили бы все содержимое массива влево, исключив элемент 0. Вы можете увидеть, как это применимо?

  • Операторы string.Equals () и == действительно одинаковы?
  • Две разные «строки» - это один и тот же экземпляр объекта?
  • Как объединить строки в Swift?
  • C путаница строк
  • Удалить все специальные символы из строки в R?
  • Заменить нечисловую пустую строку
  • Почему нет replaceAll работать в этой строке кода?
  • Как нарисовать линию направленной стрелки в Java?
  • Как проверить, содержит ли строка текст из массива подстрок в JavaScript?
  • Как получить строку между двумя символами?
  • Использование Java для поиска подстроки большей строки с использованием регулярного выражения
  • Interesting Posts

    Как использовать длинный идентификатор в Rails-приложениях?

    Триггерное нажатие на input = файл при асинхронном выполнении ajax ()

    Использование распределения динамической памяти для массивов

    Как включить автоматический вход в Windows 8

    Нет графического интерфейса после обновления до Ubuntu 9.10 (загружается в командную строку)

    Могу ли я перенести свой диск C: на любой другой компьютер и успешно загрузиться?

    Дополнительные свойства проекта проекта в закрытии buildscript

    Могу ли я использовать if (указатель) вместо if (pointer! = NULL)?

    Как отсортировать вектор символа, где элементы содержат буквы и числа в R?

    NSDate получить год / месяц / день

    Установите IE10 в режим IE9 для определенных сайтов

    Render Razor отображает строку в ASP.NET 5

    Как понять термин «тензор» в TensorFlow?

    Как я могу предотвратить использование Dragon NaturallySpeaking заглавной буквы каждый раз после нажатия?

    Как я могу сделать VNC быстрее?

    Давайте будем гением компьютера.