从String Array中删除空字符串

时间:2010-01-23 22:30:16

标签: java

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

我正在尝试使用上面的代码从字符串数组中删除第一个字符串;然而,似乎虽然我确实成功地从数组中删除了第一个字符串,但我也将数组中的最后一个字符串设为null。如何缩短阵列本身?

3 个答案:

答案 0 :(得分:4)

您需要使用java.util.Arrays T[] copyOfRange(T[] original, int from, int to) method

public static String[] RemoveString (String[] Original) { 
    return Arrays.copyOfRange(original, 1, original.length);
}

答案 1 :(得分:4)

将您的最后一行改为:

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

toArray(..)方法将列表尝试填充列表数据作为参数。您传递的是长度为3的列表,因此最后一个元素保持为空。根据我的建议,您可以使用列表的新大小创建一个新数组。

作为旁注:我建议您重新审视您的命名约定。根据{{​​3}}您的方法和变量名称应以小写字母

开头

更新:但您最好按照其他人的建议使用recommended naming conventions

答案 2 :(得分:0)

问题在于,因为新数组小于旧数组,所以新数组将被复制到旧数组中。然后用空填充剩余的字段。这很难看,但会解决你的问题:

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

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

修改的 或者做Bozho所说的,他的代码更好。

编辑2 更改以适应以下评论