一、去重的概念
在數組中,如果一個元素在數組中出現了多次,我們往往希望只記錄一次。這樣做的好處是能夠減小數組長度,便於統計和處理。
去重的方法有多種,每種方法都有自己的優缺點。在本文中,我們主要介紹使用Java的ArrayList類進行去重的方法。
二、ArrayList類簡介
在Java中,ArrayList是一種基於動態數組的數據結構,可以動態地增加或刪除其中的元素。不同於傳統數組,ArrayList可以自動擴容,因此它在使用過程中提供了很大的便利。
下面簡單介紹一些ArrayList類的基本操作:
// 創建一個ArrayList ArrayList list = new ArrayList(); // 添加元素 list.add("apple"); list.add("banana"); list.add("orange"); // 獲取元素 String fruit = list.get(0); // 刪除元素 list.remove(1); // 遍歷列表 for (String s : list) { System.out.println(s); }
三、ArrayList去重的實現方法
1. 使用set去重
我們可以使用HashSet或LinkedHashSet來幫助我們去重,具體方法如下:
ArrayList list = new ArrayList(); list.add("apple"); list.add("orange"); list.add("banana"); list.add("apple"); Set set = new LinkedHashSet(list); ArrayList newList = new ArrayList(set); System.out.println(newList); // [apple, orange, banana]
上述代碼首先將ArrayList轉換為LinkedHashSet,這樣就完成了去重操作。最後將去重後的數據再轉換為ArrayList即可。
2. 使用循環遍歷去重
我們可以使用雙重循環遍歷ArrayList,對其中的元素進行比較,從而實現去重操作。方法如下:
ArrayList list = new ArrayList(); list.add("apple"); list.add("orange"); list.add("banana"); list.add("apple"); for (int i = 0; i < list.size() - 1; i++) { String currentElement = list.get(i); for (int j = i + 1; j < list.size(); j++) { if (currentElement.equals(list.get(j))) { list.remove(j); } } } System.out.println(list); // [apple, orange, banana]
上面的代碼中,我們先遍歷ArrayList中的每一個元素,然後再遍歷其後面的元素。如果後面的元素與當前元素相同,則將其刪除。這樣就能夠實現去重操作。
四、運行時間的比較
我們來比較一下以上兩種方法的運行時間。我們選取一個含有10000個元素的ArrayList進行測試。
首先使用HashSet進行去重:
ArrayList list = new ArrayList(); for (int i = 0; i < 10000; i++) { list.add(String.valueOf(i % 100)); } long start = System.nanoTime(); Set set = new LinkedHashSet(list); ArrayList newList = new ArrayList(set); long end = System.nanoTime(); System.out.println("運行時間:" + (end - start) + "納秒"); // 運行時間:877774納秒
然後使用循環遍歷進行去重:
ArrayList list = new ArrayList(); for (int i = 0; i < 10000; i++) { list.add(String.valueOf(i % 100)); } long start = System.nanoTime(); for (int i = 0; i < list.size() - 1; i++) { String currentElement = list.get(i); for (int j = i + 1; j < list.size(); j++) { if (currentElement.equals(list.get(j))) { list.remove(j); } } } long end = System.nanoTime(); System.out.println("運行時間:" + (end - start) + "納秒"); // 運行時間:58078288納秒
通過測試結果可以看出,使用HashSet進行去重的效率比使用循環遍歷高得多。
五、總結
本文主要介紹了使用Java的ArrayList進行去重的方法。我們介紹了使用HashSet和循環遍歷兩種方法,最後通過對運行時間的比較,發現使用HashSet比使用循環遍歷更高效。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/154057.html