我不確定你從一個陣列「刪除」的意思:你根本無法做到這一點,充其量您可以將單元格內容設置爲空或以某種方式將其標記爲無效/免費。
如果您的數組按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。 –