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。如何缩短阵列本身?
答案 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 更改以适应以下评论