Java 从字符串数组中删除空字符串 公共静态字符串[]重新投资(字符串[]原始){ 字符串[]新闻字符串; List List=newarraylist(Arrays.asList(original)); 列表。删除(0); newString=list.toArray(原件); 返回新闻字符串; }

Java 从字符串数组中删除空字符串 公共静态字符串[]重新投资(字符串[]原始){ 字符串[]新闻字符串; List List=newarraylist(Arrays.asList(original)); 列表。删除(0); newString=list.toArray(原件); 返回新闻字符串; },java,Java,我试图使用上面的代码从字符串数组中删除第一个字符串;然而,似乎虽然我成功地从数组中删除了第一个字符串,但我也使数组中的最后一个字符串为空。如何缩短数组本身?您需要使用java.util.ArraysT[]copyOfRange(T[]original,int-from,int-to) 将最后一行更改为: public static String[] RemoveString (String[] Original) { return Arrays.copyOfRange(original

我试图使用上面的代码从字符串数组中删除第一个字符串;然而,似乎虽然我成功地从数组中删除了第一个字符串,但我也使数组中的最后一个字符串为空。如何缩短数组本身?

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


将最后一行更改为:

public static String[] RemoveString (String[] Original) { 
    return Arrays.copyOfRange(original, 1, original.length);
}
toArray(..)
方法将尝试用列表数据填充的列表作为参数。您正在传递一个长度为3的列表,因此最后一个元素保持为空。根据我的建议,您可以使用列表的新大小创建一个新数组

作为旁注:我建议您重新考虑您的命名约定。根据您的方法和变量名应该以小写字母开头


更新:但是你最好按照别人的建议使用。

问题是,因为你的新数组比旧数组小,所以新数组会被复制到旧数组中。剩下的字段则用null填充。这很难看,但可以解决您的问题:

NewString = list.toArray(new String[list.size()]);
公共静态字符串[]重新投资(字符串[]原始){
List List=newarraylist(Arrays.asList(Original));
列表。删除(0);
返回list.toArray(新字符串[0]);
}
编辑 或者照波佐说的做,他的代码更好

编辑2
更改以容纳下面的注释

正如我所知,该代码应该可以工作。。。也许直接使用数组列表的引用而不是列表界面。这很奇怪。。。我的其他评论呢?擦伤head@Alcon:迷失在梅塔?因为这个问题第一次贴在那里。我的答案不见了:-/@Carlos lol耶。。。对不起,我注册的地方不对谢谢!这很有效。谢谢你告诉我,但是命名约定也是:)我可以问你为什么使用数组吗?问问题下面的问题,这样作者就更有可能看到它。尽管如此,这个问题并不是很相关:)你怎么知道原创比一长?为什么不能有长度1?然后,代码将返回一个大小为1的数组,这显然是不正确的。为什么不将新字符串[0]传递给toArray()?我觉得很愚蠢,你完全正确。我不再考虑第一个有效的解决方案。(+1)事实上,这是一个优雅的解决方案。对于任何想使用copyOfRange的人来说,这只是一个提示:这个方法从Java1.6开始就可用。
NewString = list.toArray(new String[list.size()]);
public static String[] RemoveString (String[] Original) { 
  List<String> list = new ArrayList<String>(Arrays.asList(Original)); 

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