天天看點

java對象數組删除_如何從Java數組中删除對象?

[如果你想要一些現成的代碼,請滾動到我的“編輯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()在錯誤的名單上)。