我有一个列表,并且该列表有一个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