[英]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.