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,  陣列, 重複, 輸出, 移除, 項目, 值, 數字, 字串, 物件
參考資料:

這個網誌中的熱門文章

2018年5月繳106年度綜合所得稅信用卡優惠整理!

最新106年度綜合所得稅計算教學!教你看懂稅率級距表/免稅額/扣除額!今年新增基本生活費不課稅也更新囉~

綜合所得稅節稅攻略:列舉扣除額保險費篇!

證件遺失補辦身分證/健保卡/駕照/行照/信用卡總整理

國泰Koko combo icash網購/超商/icash/繳費5%!

綜合所得稅節稅攻略:列舉扣除額房貸房租篇!

7-11/全家/萊爾富刷信用卡/icash繳費賺回饋攻略!

2018最新博客來100,50,25折價券序號e-coupon分享

繳納2018/107年度房屋稅信用卡回饋/分期整理!

結婚不是罪!婚姻懲罰稅取消,夫妻可分開計稅!