Java中ArrayList刪除的常用操作及方法
remove(int index)方法
remove(int index)是ArrayList類中用于刪除指定位置元素的方法。它接收一個整型參數(shù)index,表示要刪除的元素在列表中的索引位置。該方法會刪除列表中索引為index的元素,并將其后面的元素往前移動一位,填補被刪除的元素位置。返回值是被刪除的元素。
具體實現(xiàn)中,ArrayList內部使用數(shù)組來存儲元素,因此刪除元素時需要將被刪除元素之后的所有元素都向前移動一位,以保證數(shù)組不出現(xiàn)空洞。
下面是一個簡單的示例,演示了如何使用ArrayList的remove(int index)方法來刪除指定位置的元素:
import java.util.ArrayList; public class Main { public static void main(String[] args) { // 創(chuàng)建一個ArrayList并添加一些元素 ArrayList<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Orange"); list.add("Grape"); System.out.println("原始列表:" + list); // 刪除索引為1的元素(即第二個元素) String removedElement = list.remove(1); System.out.println("刪除的元素是:" + removedElement); System.out.println("操作后的列表:" + list); } }
上述示例創(chuàng)建了一個ArrayList,并向其中添加了一些水果。然后使用remove(int index)方法刪除了索引為1的元素(即第二個元素),并打印出被刪除的元素以及操作后的列表。
運行該示例,將會輸出以下結果:
原始列表:[Apple, Banana, Orange, Grape]
刪除的元素是:Banana
操作后的列表:[Apple, Orange, Grape]
remove(Object o)方法
remove(Object o)是ArrayList類中的方法,用于從列表中刪除第一個匹配到的指定元素。它接收一個參數(shù)o,表示要刪除的元素對象。該方法會遍歷列表,找到與參數(shù)o相等的第一個元素,并將其從列表中刪除。
具體實現(xiàn)中,ArrayList內部使用數(shù)組來存儲元素。當調用remove(Object o)方法時,它會依次比較列表中的每個元素與參數(shù)o的相等性。如果找到匹配項,則刪除該元素,并將后面的元素向前移動一位來填補被刪除的位置。返回值是一個布爾值,表示是否成功刪除了元素。
import java.util.ArrayList; public class Main { public static void main(String[] args) { // 創(chuàng)建一個ArrayList并添加一些元素 ArrayList<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Orange"); list.add("Grape"); list.add("Banana"); System.out.println("原始列表:" + list); // 刪除指定的元素 boolean isRemoved = list.remove("Banana"); if (isRemoved) { System.out.println("刪除成功!"); } else { System.out.println("刪除失敗!"); } System.out.println("操作后的列表:" + list); } }
上述示例創(chuàng)建了一個ArrayList,并向其中添加了一些水果。然后使用remove(Object o)方法刪除了指定的元素(這里是"Banana"),并根據(jù)返回值判斷是否刪除成功。
運行該示例,將會輸出以下結果:
原始列表:[Apple, Banana, Orange, Grape, Banana]
刪除成功!
操作后的列表:[Apple, Orange, Grape, Banana]
removeAll?(Collection<?> c)方法
removeAll(Collection<?> c)是ArrayList類中的方法,用于從列表中刪除所有與指定集合中包含的元素相等的元素。它接收一個參數(shù)c,表示要刪除的元素集合。該方法會遍歷列表,并刪除與集合c中包含的元素相等的所有元素。
具體實現(xiàn)中,ArrayList內部使用數(shù)組來存儲元素。當調用removeAll(Collection<?> c)方法時,它會遍歷列表中的每個元素,并將其與集合c中的每個元素進行比較。如果找到匹配項,則刪除列表中的該元素,并將后面的元素向前移動一位來填補被刪除的位置。返回值是一個布爾值,表示是否成功刪除了元素。
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Main { public static void main(String[] args) { // 創(chuàng)建一個ArrayList并添加一些元素 List<String> list1 = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange", "Grape", "Banana")); // 創(chuàng)建一個要刪除的集合 List<String> list2 = new ArrayList<>(Arrays.asList("Banana", "Orange")); System.out.println("原始列表:" + list1); // 刪除與list2中包含的元素相等的所有元素 boolean isModified = list1.removeAll(list2); if (isModified) { System.out.println("刪除成功!"); } else { System.out.println("刪除失?。?); } System.out.println("操作后的列表:" + list1); } }
在上述示例中,我們首先創(chuàng)建了一個ArrayList list1,并向其中添加了一些水果。然后,我們創(chuàng)建了另一個ArrayList list2,其中包含要從 list1 中刪除的元素。接下來,我們調用 list1.removeAll(list2) 方法,它會刪除 list1 中所有與 list2 中包含的元素相等的元素。
運行該示例,將會輸出以下結果:
原始列表:[Apple, Banana, Orange, Grape, Banana]
刪除成功!
操作后的列表:[Apple, Grape]
removeIf?(Predicate<? super E> filter)方法
removeIf(Predicate<? super E> filter)是List接口中的一個默認方法,用于根據(jù)給定的條件(Predicate)刪除列表中滿足條件的元素。它接收一個參數(shù)filter,表示要應用的條件。
具體實現(xiàn)中,removeIf(Predicate<? super E> filter)方法會遍歷列表中的每個元素,并使用給定的條件(Predicate)對元素進行判斷。如果判斷結果為true,則刪除該元素。返回值是一個布爾值,表示是否成功刪除了元素。
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Main { public static void main(String[] args) { // 創(chuàng)建一個ArrayList并添加一些元素 List<String> list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Orange", "Grape")); System.out.println("原始列表:" + list); // 刪除長度小于6的元素 Predicate<String> condition = str -> str.length() < 6; list.removeIf(condition); System.out.println("操作后的列表:" + list); } }
在上述示例中,我們首先創(chuàng)建了一個ArrayList list,并向其中添加了一些水果。然后,我們定義了一個謂詞(Predicate)condition,它用于篩選要刪除的元素。具體來說,該謂詞會判斷字符串的長度是否小于6。
接下來,我們調用 list.removeIf(condition) 方法,它會刪除滿足條件的所有元素。
運行該示例,將會輸出以下結果:
原始列表:[Apple, Banana, Orange, Grape]
操作后的列表:[Banana, Orange]
removeRange?(int fromIndex, int toIndex)方法
removeRange(int fromIndex, int toIndex)方法是ArrayList類的一個受保護方法,用于刪除列表中指定范圍內的元素。該方法接受兩個參數(shù):fromIndex表示要刪除范圍的起始索引(包括),toIndex表示要刪除范圍的結束索引(不包括)。
需要注意的是,removeRange(int fromIndex, int toIndex)方法是ArrayList類中的受保護方法,意味著它只能在ArrayList的子類中訪問和使用。這是為了避免直接暴露刪除范圍的操作,因為在刪除范圍后,列表的內部結構可能會發(fā)生不連續(xù)或混亂的變化。
import java.util.ArrayList; import java.util.Arrays; public class Main<E> extends ArrayList<E> { public void removeElementsInRange(int fromIndex, int toIndex) { if (fromIndex < 0 || toIndex > size() || fromIndex > toIndex) { throw new IndexOutOfBoundsException(); } removeRange(fromIndex, toIndex); } public static void main(String[] args) { // 創(chuàng)建一個CustomArrayList并添加一些元素 Main<String> list = new Main<>(); list.addAll(Arrays.asList("Apple", "Banana", "Orange", "Grape")); System.out.println("原始列表:" + list); // 刪除索引為1到3之間的元素(不包括3) list.removeElementsInRange(1, 3); System.out.println("操作后的列表:" + list); } }
在這個示例中,我們創(chuàng)建了一個自定義的ArrayList子類Main,它繼承了ArrayList,并添加了一個新的方法removeElementsInRange(int fromIndex, int toIndex)。在該方法內部,我們首先進行參數(shù)的合法性檢查,確保起始索引和結束索引在有效范圍內。然后,我們調用removeRange(fromIndex, toIndex)方法來實際刪除指定范圍內的元素。
運行該示例,將會輸出以下結果:
原始列表:[Apple, Banana, Orange, Grape]
操作后的列表:[Apple, Grape]
需要注意的是,盡管我們可以在子類中使用removeRange(int fromIndex, int toIndex)方法,但在一般情況下,推薦使用更高級別的方法,如removeAll(Collection<?> c)或removeIf(Predicate<? super E> filter)來刪除元素。這些方法更易于使用,并提供了更靈活的條件判斷,以滿足不同的需求。
到此這篇關于Java中ArrayList刪除的常用操作及方法的文章就介紹到這了,更多相關Java ArrayList刪除內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java文件操作報錯:java.io.FileNotFoundException(拒絕訪問)問題
在進行編程時,經(jīng)常會遇到因疏忽小細節(jié)而導致的錯誤,如忘記在路徑后添加文件名,本文通過一個具體的修改前后對比示例,解釋了錯誤原因,并給出了解決方案,這類經(jīng)驗分享對編程學習者具有參考價值2024-10-10SpringBoot 整合 JMSTemplate的示例代碼
這篇文章主要介紹了SpringBoot 整合 JMSTemplate的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08