public static String[] removeElements(String[] input, String deleteMe) {
if (input != null) {
List<String> list = new ArrayList<String>(Arrays.asList(input));
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals(deleteMe)) {
list.remove(i);
}
}
return list.toArray(new String[0]);
} else {
return new String[0];
}
}
我认为问题是要求解决 没有集合 API 的使用问题。人们可以使用数组来处理低层次的细节问题(性能很重要) ,也可以使用数组来进行松散耦合的 SOA 集成。在后一种情况下,可以将它们转换为 Collective 并将它们作为集合传递给业务逻辑。
对于低级别的性能部分,通常已经被 For 循环等快速而肮脏的命令式状态混合模糊了。在这种情况下,在集合和数组之间来回转换是非常麻烦的,不可读的,甚至是资源密集型的。
顺便问一下,TopCoder,有人知道吗?总是那些数组参数!所以准备好在竞技场应付他们。
下面是我对这个问题的解释,以及一个解决方案。它的功能不同于 Bill K和 Jelovirt给出的功能。此外,当元素不在数组中时,它会优雅地处理这种情况。
希望能帮上忙!
public char[] remove(char[] symbols, char c)
{
for (int i = 0; i < symbols.length; i++)
{
if (symbols[i] == c)
{
char[] copy = new char[symbols.length-1];
System.arraycopy(symbols, 0, copy, 0, i);
System.arraycopy(symbols, i+1, copy, i, symbols.length-i-1);
return copy;
}
}
return symbols;
}