首頁 > Java > java教程 > 如何有效偵測 Java 陣列中的重複整數?

如何有效偵測 Java 陣列中的重複整數?

Barbara Streisand
發布: 2024-12-07 09:39:15
原創
191 人瀏覽過

How Can I Efficiently Detect Duplicate Integers in a Java Array?

辨識 Java 陣列中的重複項:一段旅程

在 Java 領域,經常遇到的一個完整任務是在整數陣列 (int [])。然而,當嘗試識別這些重複項時,會出現一個常見的陷阱。讓我們探討這個問題及其解決方案。

考慮以下代碼:

此代碼旨在確定給定的郵遞區號清單是否包含任何重複元素。但是,它無法考慮不存在重複項的情況。因此,重複的結果總是為真。

辨識缺陷

為了理解這個缺陷,讓我們來分析一下邏輯。該程式碼具有嵌套循環,用於將清單中的每個元素與其他每個元素進行比較。如果任何兩個元素匹配,則重複項設為 true,表示存在重複項。但是,當沒有重複項時,循環不可避免地將元素與其自身進行比較。對於每個元素,此自我比較會將重複項設為 true。

正確的方法

為了確保正確偵測重複項,程式碼應排除自我比較。實現此目的的一種方法是修改巢狀循環結構,如下所示:

此修改透過在下一個索引 (k=j 1) 啟動內部循環來跳過自比較。

探索替代解決方案

雖然正確的方法有效,但還有更快的替代方案。考慮以下基於雜湊圖的解決方案:

此解決方案利用雜湊集來有效地檢查重複元素。每個元素都會加入到哈希集中,如果元素已存在,則表示重複。

另一種有效的方法涉及使用點陣圖:

此解決方案建立一個點陣圖數組的大小等於數組中的最大可能值 (MAXZIP)。然後,它使用位元操作為輸入數組中遇到的每個元素設定相應的位元。如果已設定任何位,則表示重複。

基準測試結果

為了評估這些方法的效能,我們使用不同的清單大小進行了基準測試。結果表明,位圖方法在效率方面明顯獲勝,特別是對於較大的清單:

Array Size Bitmap (ms) Hash Set (ms) Nested Loops (ms)
10 0.0 0.0 0.0
1,000 0.0 0.0 0.0
10,000 0.0 0.0 100.0
100,000 0.0 0.16 9,923.3

結論

一旦理解了陷阱,辨識 Java 陣列中的重複項就可以是一項簡單的任務。透過避免自我比較或利用雜湊集和點陣圖等替代方法,可以實現高效且準確的重複檢測,從而優化 Java 應用程式的效能。

以上是如何有效偵測 Java 陣列中的重複整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板