簡體   English   中英

用於為float []中的值生成相同的唯一ID /哈希的算法

[英]Algorithm for generating the same unique ID/Hash as long for values in float[]

對於很多具有2d幾何形狀的float []數組,我試圖將這些頂點列表緩存到某些鍵控貼圖中。

出於(讀取)性能原因,具有long或int的鍵應該比字符串之一快。

objectmap<key,float[]> 

是否可以根據值創建int / long鍵?

keyForVertices = generateKeyFromVertices(float[]{...})

對於float []中的相同值,對於每個float []值,生成的鍵應該是唯一的,即。

arrAKey = generate from float[]{-10,10,20,20,30,30} 
arrBKey = generate from float[]{-10,10} 
arrCKey = generate from float[]{10,-10} 

arrAKey!=arrBKey
arrBKey!=arrCKey
arrAKey!=arrCKey

**編輯為什么java.util.Arrays.hashCode(float [])無法正常工作?

您可以使用Cantor配對功能或Szudzik方法。 檢查此答案 對於兩個以上的數字,您可以使用配對功能。

任何哈希或校驗和算法都將為您提供穩定的結果(對於相同的內容始終提供相同的答案)。 算法的質量將決定您有多少個沖突(返回相同結果的不同內容)。 您可以使用標准的Java CRC32校驗和,但它確實需要字節而不是浮點數。

我認為您對使用Arrays.hashCode(float[])將完全返回您想要的內容(根據給定數組中的內容確定地計算出的相對穩定的int)。

請注意,如果您開始緩存頂點數組,則無論如何都要對這些數組進行突變或更改,都需要格外小心。 (緩存的條目將需要無效,並且您可能最終共享了您本不想共享的突變。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM