как мне игнорировать / удалять значения массива в Java - PullRequest
1 голос
/ 13 октября 2011

У меня есть список слов, есть 4 слова, он не может содержать больше 4, это просто пример.Я хочу использовать только 2 слова, остальные из них следует игнорировать или удалять, например:

    String planets = "Moon,Sun,Jupiter,Mars";
    String[] planetsArray = planets.split(",");
    int numberOfPlanets = planetsArray.length;

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

Ответы [ 5 ]

1 голос
/ 13 октября 2011

Как указано в вашем предыдущем вопросе , вы можете использовать

String[] fewPlanets = new String[]{planets[0], planets[1]};

Просто убедитесь, что массив planets имеет 2 или более элементов, чтобы избежать ArrayIndexOutOfBoundsException. Вы можете использовать length, чтобы проверить это: if (planets.length >= 2)

Для более сложного решения вы также можете сделать это, используя System.arrayCopy(), если вы используете Java 1.5 или более раннюю версию,

int numberOfElements = 2;
String[] fewPlanets = new String[2];
System.arraycopy(planets, 0, fewPlanets, 0, numberOfElements);

или Arrays.copyOf(), если вы используете Java 1.6 или новее:

int numberOfElements = 2;
String[] fewPlanets = Arrays.copyOf(planets, numberOfElements);
1 голос
/ 13 октября 2011

Используйте Arrays.asList , чтобы получить List из String s из String[] planetsArray.

Затем используйте методы интерфейса List -contains, remove, add, ...- просто делать с ней что угодно List.

1 голос
/ 13 октября 2011
String planets = "Moon,Sun,Jupiter,Mars";
String[] planetsArray = planets.split(",");
if(planetsArray .length > 2){
  String []newArr = new String[2];
  newArr[0]=planetsArray [0];
  newArr[1]=planetsArray [2];
  planetsArray = newArr ;
}
0 голосов
/ 13 октября 2011

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

(Конечно, если ваш фрагмент кода является лишь примером, и у вас нет ввода через запятую, пожалуйста, игнорируйте это предложение:)

0 голосов
/ 13 октября 2011

Если вам нужно выбрать первые 2 планеты, просто скопируйте массив:

String[] newPlanetsArray = Arrays.CopyOf(planetsArray, 2);

Если вам нужно выбрать 2 конкретные планеты, вы можете применить следующий алгоритм:

Сначала создайте новый массив с 2 элементами. Затем выполните итерацию по элементам в исходном массиве и, если текущий элемент совпадает, добавьте его в новый массив (отслеживайте текущую позицию в новом массиве, чтобы добавить следующий элемент).

String[] newPlanetsArray = new String[2];

for(int i = 0, int j = 0; i < planetsArray.length; i++) {
   if (planetsArray[i].equals("Jupiter") || planetsArray[i].equals("Mars")) {
      newPlanetsArray[j++] = planetsArray[i];
      if (j > 1)
         break;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...