如何在java中忽略/删除数组的值

时间:2011-10-13 09:23:09

标签: java string

我有一个单词列表,有4个单词,它不能包含更多4个单词只是一个例子。我想只使用其中两个词应该被忽略或删除,例如:

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

我得到的结果是4.如果我的列表包含多于2个单词,我如何删除其余单词?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

使用Arrays.asListList获取String String[] planetsArray个。

然后使用List界面的方法 - containsremoveadd,...... - 在{{1}上做任何你想做的事情}。

答案 2 :(得分:1)

根据previous question的建议,您可以使用

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

只需确保planets数组包含2个或更多元素即可避免使用ArrayIndexOutOfBoundsException。您可以使用length进行检查:if (planets.length >= 2)

对于更复杂的解决方案,如果您使用的是Java 1.5或更早版本,也可以使用System.arrayCopy()执行此操作,

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

答案 3 :(得分:0)

如果你需要选择前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;
   }
}

答案 4 :(得分:0)

您可以使用How to find nth occurrence of character in a string?中的提示,并避免从逗号分隔的字符串输入中读取剩余值。只需找到第二个逗号和子字符串

(当然,如果你的代码片段只是一个例子而你没有逗号分隔的输入,那么请忽略这个建议:)