我正在將java對象編入Elasticsearch。以下是一類的結構:Java對象的唯一標識
public Class Document{
private String name;
private double value;
private Date date;
private Map<String, String> attributes;
//getters and setters
}
I指數的任何對象之前,我想計算/得出的唯一ID時應該根據這些成員的值的對象。如果我爲名稱,日期,值和屬性構造另一個具有相同值的對象(即,如果鍵值對的數量和值相同),則ID也應該相同。
目前,我使用Objects.hash(Object... objects)
來計算hashCode並將該hashCode設置爲id。它似乎工作正常。它爲這些屬性具有相同值的對象返回相同的整數。但是,考慮到java中int數量的文檔和範圍,hashcode可能會/可能不會相同(這會導致重複的文檔)。
任何替代解決方案呢?我們可以根據這些值創建一個字母數字字符串(或其他)嗎?
在此先感謝。
是否有任何對象的元素是唯一的?你需要爲這些對象中的每一個提供某種類型的ID。 – Qwertyzw 2015-02-05 23:15:32
沒有一個元素是唯一的。但是,所有元素的組合應該是唯一的。 – 2015-02-05 23:17:03
你的意思是你擔心所有哈希碼的大小是否足夠大量的對象? – MageXellos 2015-02-05 23:20:41