Как избавиться от пустого элемента массива в Java? - PullRequest
0 голосов
/ 01 декабря 2011

Допустим, у меня есть следующий массив:

  String[] letter = {a, b, c, e, f, }

Как мне обрезать этот массив, чтобы избавиться от пустого элемента?

Ответы [ 5 ]

7 голосов
/ 01 декабря 2011

Там - это нет "пустого" элемента в этом массиве.Конечная запятая не имеет значения - в вашем массиве по-прежнему 5 элементов.

Если у вас есть реальная проблема в реальном коде, где некоторые элементы в массиве пусты (и вам придетсяскажем, что вы подразумеваете под этим - нулевое значение? Значение, ссылающееся на пустую строку?) вы не можете изменить размер существующего массива, но вы можете создать новый массив, например, с помощью

List<String> list = new ArrayList<String>();
for (String text : array)
{
    if (text != null && text.length() > 0)
    {
        list.add(text);
    }
}
array = list.toArray(new String[0]);
2 голосов
/ 01 декабря 2011

Пустого элемента нет.

Java допускает использование запятой после последнего элемента в массиве, определенного в коде. Таким образом, в вашем массиве нет пустого элемента.

Чтобы создать пустой (нулевой) элемент, вам нужно сделать это:

String[] letter = {a, b, c, e, f, null};

Примечание. Согласно моей интерпретации, OP чувствует, что запятая добавляет нулевой элемент в конец массива.

1 голос
/ 01 декабря 2011

Нет пустого элемента в вашем массиве. Если вы поставите, как показано ниже, он также будет содержать ноль и пробел.

String[] letter = {"a", "b", "c", "e", "f", null, " h", " "};

и тогда вы должны пройти вот так.

    for (int i = 0; i < letter.length; i++) {
        if (letter[i] != null && !letter[i].equals(" ")) {
            System.out.println("Letters::::::" + letter[i]);
        }

    }
    System.out.println("Length:::::" + letter.length);
0 голосов
/ 03 ноября 2017

Этот простой фрагмент кода можно использовать для удаления пустых и пустых строк из массива` import java.util.Arrays;

public class Test {
   public static void main(String[] args) {
      String data = "1, 2, ,4 , , 5 ";
      String[] split = data.split(",");
      split = Arrays.stream(split).filter(s -> (s != null && s.length() > 0 && !s.trim().equals("")))
            .toArray(String[]::new);
      for(String str:split){
          System.out.println(str.trim());
      }
  }
}`
0 голосов
/ 01 декабря 2011

Предполагая, что у вас есть массив с одним или несколькими элементами null в конце, вы можете использовать приведенный ниже код, чтобы найти индекс первого элемента null, а затем создать копию массива, отбрасывая его элемент и все, что после него.

// sample array to be trimmed
String[] array = {"1", "2", "3", null, null};

int end = Arrays.asList(array).indexOf(null);
if (end >= 0) {
    String[] tmp = new String[end];
    System.arraycopy(array, 0, tmp, 0, end);
    array = tmp;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...