[如果你想要一些现成的代码,请滚动到我的“编辑3”(剪裁后)。其余的都是为子孙后代而来的。]List list = new ArrayList(Arrays.asList(array));list.removeAll(Arrays.asList("a"));array = list.toArray(array);
编辑:我现在正在使用Arrays.asList而不是Collections.singleton*Singleton仅限于一个条目,而asList方法允许您在以后添加其他字符串以筛选出:Arrays.asList("a", "b", "c").
Edit 2:上面的方法保留相同的数组(因此数组仍然是相同的长度);最后一个之后的元素被设置为NULL。如果你想新的数组大小与所需大小完全相同,请使用以下方法:array = list.toArray(new String[0]);
编辑3:如果您在同一个类中频繁使用此代码,您可能希望考虑将其添加到您的类中:private static final String[] EMPTY_STRING_ARRAY = new String[0];
然后功能变成:List list = new ArrayList<>();Collections.addAll(list, array);list.removeAll(Arrays.asList("a"));
array = list.toArray(EMPTY_STRING_ARRAY);
然后,这将停止使用无用的空字符串数组乱扔堆,否则将是new每次你的函数被调用时。
玩世不恭的人的建议(见评论)也会对乱扔垃圾有所帮助,为了公平起见,我应该提一提:array = list.toArray(new String[list.size()]);
我更喜欢我的方法,因为它可能更容易弄错显式大小(例如,调用size()在错误的名单上)。