Kiesa
Kiesa

Reputation: 407

how do I ignore/delete values of an array in java

I have a list of words , there are 4 words, it cant contain more that 4 its just an example. I want to use just 2 of the words the rest of them should be ignored or deleted e.g :

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

the result i get is 4. How do i delete the rest of the words if my list contains more that 2 words ?

Upvotes: 1

Views: 4594

Answers (5)

Xavi López
Xavi López

Reputation: 27880

As suggested in your previous question, you can use

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

Just make sure the planets array has 2 elements or more to avoid an ArrayIndexOutOfBoundsException. You can use length to check it: if (planets.length >= 2)

For a more sophisticated solution, you could also do this using System.arrayCopy() if you're using Java 1.5 or earlier,

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

or Arrays.copyOf() if you're using Java 1.6 or later:

int numberOfElements = 2;
String[] fewPlanets = Arrays.copyOf(planets, numberOfElements);

Upvotes: 1

aldrin
aldrin

Reputation: 4572

You could use an idea from How to find nth occurrence of character in a string? and avoid reading the remaining values from your comma separated string input. Simply locate the second comma and substring upto there

(Of course if your code snippet is just an example and you do not have a comma separated input, then please ignore this suggestion :)

Upvotes: 0

bruno conde
bruno conde

Reputation: 48265

If you need to select the first 2 planets just copy the array:

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

If you need to select 2 specific planets you can apply the following algorithm:

First, create a new array with 2 elements. Then, iterate through the elements in the original array and if the current element is a match add it to the new array (keep track of the current position in the new array to add the next element).

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;
   }
}

Upvotes: 1

Jean Logeart
Jean Logeart

Reputation: 53829

Use Arrays.asList to get a List of Strings from String[] planetsArray.

Then use the methods of the List interface -contains,remove,add, ...- to simply do whatever you want on that List.

Upvotes: 1

Jigar Joshi
Jigar Joshi

Reputation: 240908

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 ;
}

Upvotes: 1

Related Questions