我有一個列表,並且該列表有一個x509certificate
,我用它來存儲在一個cms包中。所有的花花公子,直到我遇到問題:我不能讓同一個人簽署兩次。
所以,我知道如何通過等於找到該證書,所以一個線性搜索。如何使用二進制搜索比較x509certificates
這可能聽起來純虛榮,但我寧願使用二進制搜索,使用,顯然,comparable
。
天哪,我能做到嗎? (java或bouncyCastle)。
感謝
我有一個列表,並且該列表有一個x509certificate
,我用它來存儲在一個cms包中。所有的花花公子,直到我遇到問題:我不能讓同一個人簽署兩次。
所以,我知道如何通過等於找到該證書,所以一個線性搜索。如何使用二進制搜索比較x509certificates
這可能聽起來純虛榮,但我寧願使用二進制搜索,使用,顯然,comparable
。
天哪,我能做到嗎? (java或bouncyCastle)。
感謝
商店中的證書在TreeSet
和使用Collections.binarySearch
尋找感興趣的證書(你必須把你的Set
成List
第一)。底層TreeSet
是TreeMap
,因此如果您不喜歡該實施,則可以實施SortedSet
並製作您自己的。如果重複的證書不是問題,則將其存儲在List
中,並在調用binarySearch
之前對其進行分類。
是不是有一個原因,你不想使用良好的'Collection.contains
?
的事情是,bouncycastle和java的X509Certificate的實現沒有實現可比較的
,我不知道如何使用作爲比較... – 2012-02-11 22:37:46
然後,只要去'HashSet' ,'Set.contains()',並轉向代碼的更重要部分。 – Paul 2012-02-12 02:16:37
它實現了#equals(Object)&#hashCode() - 即你可以使用散列圖來查找它。 – Jens 2012-02-11 21:36:34
或者更簡單,一個HashSet。如果(set.add(cert)){...} – dnault 2012-02-11 22:34:00
我想通過serialnumber進行搜索,只要我找到比較編碼字節(.getEncoded())...你覺得怎麼樣? – 2012-02-11 22:40:51