我不确定你从一个阵列“删除”的意思:你根本无法做到这一点,充其量您可以将单元格内容设置为空或以某种方式将其标记为无效/免费。
如果您的数组按ID排序,您可以二进制搜索要“移除”的ID以获得更好的性能:假设N是集合的大小和移除集合的M,则正常迭代是O(n * m),而通过二进制搜索你可以得到O(log(n)* m)
一般来说,即使你有一个库,它也会完成这些与这些数据结构,只是幕后。
正如其他人指出的那样,如果您需要支持删除,最好使用不同的结构:假设您有ID,表明您的项目是唯一的,所以Set可能是理想的,否则List应该做,或者Map Obj - > Int来实现多套。
假如你可以改变你的代码,使用更理想的结构,你可以不喜欢(Java8):
Set<Track> tracks;
Set<String> idsToRemove;
//Note: this has O(n*m) performance, though you could try using .parallelstream() instead of .stream()
Set<Track> remainingOnes = tracks.stream().filter(x -> !idsToRemove.contains(x.id)).collect(Collectors.toSet());
鉴于你的相关信息提供,没有。如果主数组按trackId排序,则可以对它们进行二分搜索。另外,你不能从数组中真正地“移除”,至多你可以将单元格的内容设置为null。 –