2012年2月21日

Java:移除陣列Array中重複的值


 
隱隱感覺到發展為系列文的跡象,
之前一篇介紹的是陣列與字串的轉換,
連結在: Java:陣列與字串轉換,Array to String 和 String to Array 。
而這一篇則是要簡單介紹一下如何移除陣列中重複的值或項目。


要達到移除陣列中的重複項目,傳統的作法是另外建一個陣列,
然後在每次把新項目加入之前檢查新陣列中是否已有應項目。
上面的想法很直覺,但實作起來最難的地方應該是不知道新陣列該建多大,
不過可以利用 ArrayList 加入項目後再轉為陣列即可。

除了上面所說的方法外,下面的程式碼是直接利用 Set 中項目或值不會重複的特性,
只要一個一個把值放進去,就可以自動移除重複的項目了!超簡單!

 1 package werdna1222coldcodes.blogspot.com.demo.array;
 2 
 3 import java.text.ParseException;
 4 import java.util.HashSet;
 5 import java.util.Set;
 6 
 7 public class ArrayRemoveDuplicateDemo {
 8 
 9     public static void main(String[] args) throws ParseException {
10 
11         // 建立有重複項目之 int array
12         int duplicateArray[] = { 4, 2, 5, 1, 5, 2, 4, 3 };
13         
14         // 利用 Set 的特性,將所有項目放入 Set 
15         中即可移除重複的項目
16         Set<Integer> intSet = new HashSet<Integer>();
17         for (int element : duplicateArray) {
18             intSet.add(element);
19         }
20 
21         // intSet.size() 為不重複項目的個數
22         int nonDuplicateArray[] = new int[intSet.size()];
23 
24         // 將 Set 中的項目取出放到 nonDuplicateArray 中
25         // 這裡也可以利用 iterator 來達成
26         Object[] tempArray = intSet.toArray();
27         for (int i = 0; i < tempArray.length; i++) {
28             nonDuplicateArray[i] = (Integer) tempArray[i];
29         }
30 
31         // 輸出結果:1, 2, 3, 4, 5, 
32         for (int element : nonDuplicateArray) {
33             System.out.print(element + ", ");
34         }
35     }
36 }

下一篇要介紹的是如何對陣列作排序,
請見:Java:針對Array中的值作排序
更多關於 Java 的教學及程式範例,請見:
Java 教學及程式範例大全

關鍵字: Java, array,  陣列, 重複, 輸出, 移除, 項目, 值, 數字, 字串, 物件
參考資料:


更多精選推薦文章