草庐IT

integer-hashing

全部标签

java - 在 Java 中从 MongoDB 读取 Integer 字段时出现长类型转换错误

我正在从Rails应用程序写入的Java访问MongoDB实例。我正在检索应存储在Long中的整数值,因为它们可以超过32位。此代码将编译:this.profile_uid=(Long)this.profile.get("uid");但是,我遇到类型转换运行时错误:Exceptioninthread"main"java.lang.ClassCastException:java.lang.Integercannotbecasttojava.lang.Long这大概是因为该字段由Mongo作为Integer返回,但我知道某些ID可以作为Longs出现,并且出于各种原因我无法更改写入DB的类

java - JAXB Marshall Map<Integer, ArrayList<String>>

我有一个对象我想编码。@XmlRootElementpublicclassBoxItem{@XmlElementMap>intgerStringArrMap;BoxItem(){intgerStringArrMap=newHashMap>();for(inti=0;istringArrayList=newArrayList();for(intj=0;j现在假设我们有一个boxItem=newBoxItem()如果我调用jaxbMarshaller.marshal(boxItem,System.out);,每个条目的值为空。012如何将ArrayList中的元素编码到一个Map值中?

java - 如何从 Set<Integer> 创建 IntStream?

我目前这样做:Setintegers=...//sourcedfromelsewhereincodeIntStreamintStream=integers.stream().mapToInt(value->value);必须将值映射到值以转换Stream似乎是多余的至IntStream.有没有办法在没有冗余的情况下做到这一点mapToInt(...)部分? 最佳答案 不,你必须使用.mapToInt(value->value)或者(对我来说更好看).mapToInt(Integer::intValue).作为Stream是通用类,它

java - 为 Set<Integer> 的类似 BitSet 的实现有效地计算 hashCode

我想知道如何有效地计算hashCode对于BitSet类似Set的实现.BitSet#hashCode显然计算速度很快,相当愚蠢(*)并且与Set#hashCode()不兼容.快速兼容的实现可能是这样的inthashCode(){intresult=0;for(inti=0;i如果有一个有效的实现intweightedBitCount(longword){//naiveimplementationintresult=0;for(inti=0;i如果大多数位未设置,可以通过测试word==0来改进简单的实现或使用Long.highestOneBit或类似的东西,但这些技巧在其他情况下没有

java - 以与顺序无关的方式散列一组整数

我想散列一组整数,这样整数的顺序就不会影响计算的散列值。即H([32224,12232,564423])==H([564423,32224,12232])。唯一集的数量将在数百万范围内。速度非常重要,但我需要知道所选方法的碰撞上限。维基百科关于hashingvectors有一个很好的部分,但我不明白它背后的数学原理,无法自信地在代码中实现它们。如果有人能解释一些代码所涉及的数学,我将不胜感激。理想情况下,我希望最终散列为32位。如果它有用-我将用Java实现它。更新:由于性能原因(对大量此类集合进行操作),我特别希望避免对集合中的整数进行排序。 最佳答案

java - 为什么 Objects.hash() 为相同的输入返回不同的值?

我运行了以下脚本(java),它给了我奇怪的结果。有没有人可以帮忙解释一下?importjava.util.Objects;importorg.apache.log4j.Logger;publicclassCacheTester{privatestaticfinalLoggerlog=Logger.getLogger(CacheTester.class);@TestpublicvoidhashCodeTest(){for(inti=0;iLogResult(各不相同)://...2015-04-2917:43:20INFOCacheTester:42-14319045402015-04

Java - List<Integer> 排序、比较器和溢出

我有以下代码按降序对列表进行排序Listlist=Arrays.asList(Integer.MAX_VALUE,-1);list.sort((x,y)->y-x);System.out.println(list)结果是[-1,2147483647]现在,我知道我不应该写y-x,因为它会导致溢出问题。但问题是为什么输出是这样的?我相信输出会是[2147483647,-1]因为-1-Integer.MAX_VALUE是-2147483648,仍然是一个负整数,广告该操作似乎不受溢出问题的影响。我做错了什么? 最佳答案 正如您在Orac

java - Hash(#) 在查询字符串中的行为是什么

我正在发送以下带有查询字符串的url。在查询字符串一个参数“approverCmt”具有哈希值(#)。"/abc/efd/xyz.jas?approverCmt=TransactionLog#459505&batchNm=XS_10APR2015_082224&mfrNm=Timberland"在服务器端,当我试图从我收到的请求中检索它时approverCmt=TransactionLog----->"#459505"ismissingbatchNm=nullmfrNm=null如果我从查询字符串中删除散列(#)或者如果我将#替换为%23一切正常我不明白为什么如果另一个参数包含井号(#

java - 为什么不能在没有花括号的循环中将 int 分配给 Integer?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:WhythisisnotcompilinginJava?在java中,花括号对于一行for循环是可选的,但我发现了一种不允许的情况。例如,这段代码:for(inti=0;i不会编译,但是如果你添加花括号,像这样:for(inti=0;i会的。为什么这段代码不能编译?

java - 在 Java 中将 Integer(可能为 null)转换为 int 的更好方法?

Integer可以是null。我通过以下方式将Integer转换为int:Integerinteger=null;inti;try{i=integer.intValue();}catch(NullPointerExceptione){i=-1;}有没有更好的办法? 最佳答案 对于Java8,以下也适用:Optional.ofNullable(integer).orElse(-1) 关于java-在Java中将Integer(可能为null)转换为int的更好方法?,我们在StackOve