首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 使用 Hashtable 去除數組重複元素

     編輯:Java 相關知識

實現思路

利用 Hashtable(或 HashMap)鍵的唯一性,將數組元素作為鍵放入,最後取出值集合即可得到去重後的數組。

通用去重工具類

package org.eline.core.web.support;

import java.util.Hashtable;

public class ObjectFilter {
    /** 
     * 過濾數組中重複元素
     * @param arr 待過濾數組
     * @return 去重後的新數組
     */
    public Object[] filter(Object[] arr) {
        Hashtable<Object, Object> table = new Hashtable<>();
        for (Object o : arr) {
            table.put(o, o); // 鍵值相同,自動去重
        }
        return table.values().toArray();
    }

    public static void main(String[] args) {
        ObjectFilter filter = new ObjectFilter();

        // 字符串測試
        String[] strArr = {"13111", "13112", "13111"};
        Object[] res1 = filter.filter(strArr);
        System.out.println("去重後長度:" + res1.length);
        for (Object o : res1) System.out.println(o);

        // 整數測試
        Integer[] intArr = {1, 3, 5, 7, 1, 2, 4, 5};
        Object[] res2 = filter.filter(intArr);
        for (Object o : res2) System.out.println(o);
    }
}

優化建議

  • 優先使用 HashSet 或 LinkedHashSet(保持順序),代碼更簡潔:
    public static <T> T[] distinct(T[] arr) {
        return new ArrayList<>(new LinkedHashSet<>(Arrays.asList(arr))).toArray((T[]) Array.newInstance(arr.getClass().getComponentType(), 0));
    }
  • 若數組為基本類型(int[] 等),需先裝箱或使用專用邏輯。
  • Java 8+ 可用 Stream API:Arrays.stream(arr).distinct().toArray()。

總結

本文展示了基於 Hashtable 的經典去重寫法,並給出現代 Java 更優雅的替代方案,開發者可根據項目 JDK 版本選擇。

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