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


相關文章

這個網誌中的熱門文章

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

【國泰KOKO COMBO icash】2019權益更新!網購/超商/交通5%回饋!(需當月消費5000)

【博客來折價券】最新100,50,25序號e-coupon免費分享(持續更新)

【台新@GoGo】一般消費1.5%網購3.5%!行動支付/保費同享優惠密技!

【台新FlyGo】出國神卡新登場!台新飛狗卡機票最高5%、國外最高2.8%!

TOEIC多益成績分數查詢、計算標準與換算對照表

銀行代碼查詢:3碼銀行代碼列表、7碼分行代碼查詢

【華南新戶5%】限時申辦華南指定icash聯名卡獨享2019年全年網購5%!(2018/12/15前申辦)

【符碼刷卡報】超商消費繳費懶人包+優惠總整理

【玉山Pi信用卡】Pi拍錢包限定資格會員+玉山新戶辦卡拿1000!(~2018/12/31)