Удаление пустой строки из String Array - PullRequest
3 голосов
/ 24 января 2010
public static String[] removeString (String[] original) { 
  String[] newString; 
  List<String> list = new ArrayList<String>(Arrays.asList(original)); 

  list.remove(0); 
  newString = list.toArray(original); 
  return newString; 
}

Я пытаюсь использовать приведенный выше код для удаления первой строки из массива строк; тем не менее, кажется, что, хотя мне удалось удалить первую строку из массива, я также сделал последнюю строку в массиве нулевой. Как я могу сделать сам массив короче?

Ответы [ 3 ]

4 голосов
/ 24 января 2010

Измените свою последнюю строку на:

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

Метод toArray(..) принимает в качестве аргумента список, который он пытается заполнить данными списка. Вы передаете список длиной 3, поэтому последний элемент остается пустым. С моим предложением вы создаете новый массив с новым размером списка.

Как примечание: я бы посоветовал вам пересмотреть свои соглашения об именах. В соответствии с рекомендованными соглашениями об именах имена ваших методов и переменных должны начинаться со строчной буквы

Обновление: но вам лучше использовать Arrays.copyOfRange(..), как предлагают другие.

4 голосов
/ 24 января 2010

Вы захотите использовать метод java.util.Arrays T[] copyOfRange(T[] original, int from, int to) .

public static String[] RemoveString (String[] Original) { 
    return Arrays.copyOfRange(original, 1, original.length);
}
0 голосов
/ 24 января 2010

Проблема в том, что, поскольку ваш новый массив меньше старого, новый массив копируется в старый. Остальные поля затем заполняются нулями. Это некрасиво, но решит вашу проблему:

public static String[] RemoveString (String[] Original) { 
  List<String> list = new ArrayList<String>(Arrays.asList(Original)); 

  list.remove(0); 
  return list.toArray(new String[0]);
 }

редактировать Или делать то, что сказал Божо, его код лучше.

редактировать 2 Изменения для размещения комментария ниже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...