首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 去除重複數字:HashSet、陣列遍歷、Stream API 三種實作方式比較

     編輯:程式設計綜合問答

需求

輸入 10 個整數,僅輸出不重複的數字(保留首次出現順序或排序均可)。

方法一:HashSet(最簡潔、無序)

Set<Integer> set = new HashSet<>();
for (int i = 0; i < 10; i++) set.add(scanner.nextInt());
set.forEach(System.out::println);

方法二:陣列 + 手動檢查(教學用、保留順序)

int[] arr = new int[10];
int count = 0;
for (int i = 0; i < 10; i++) {
    int n = scanner.nextInt();
    boolean exists = false;
    for (int j = 0; j < count; j++) if (arr[j] == n) { exists = true; break; }
    if (!exists) arr[count++] = n;
}
for (int i = 0; i < count; i++) System.out.println(arr[i]);

方法三:Java 8 Stream API(現代、一行式)

IntStream.generate(scanner::nextInt).limit(10).distinct().forEach(System.out::println);

效能與適用性比較

方法時間複雜度空間順序保留適用場景
HashSetO(N)O(N)否一般去重、不在乎順序
LinkedHashSetO(N)O(N)是需保留輸入順序
陣列遍歷O(N²)O(1)是教學、極小資料量
Stream distinctO(N)O(N)是函數式風格、JDK 8+

建議

實務上優先使用 LinkedHashSet 兼顧效能與順序;教學作業可展示陣列遍歷邏輯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved