Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将int映射到int(在Java中)_Java_Algorithm_Dictionary_Integer_Mapping - Fatal编程技术网

将int映射到int(在Java中)

将int映射到int(在Java中),java,algorithm,dictionary,integer,mapping,Java,Algorithm,Dictionary,Integer,Mapping,在Java中 例如,如何将一组数字集成器映射到另一组数字? 所有的数字都是正数,并且所有的数字在它们自己的集合中都是唯一的 第一组数字可以有任何值,第二组数字表示数组的索引,因此目标是能够通过第一组数字访问第二组数字。这是一对一的关系 速度至关重要,因为该方法必须每秒调用多次 编辑:我尝试使用SE hashmap实现,但发现速度很慢。听起来hashmap就是您要找的。听起来hashmap就是您要找的。地图界面可以满足您的需求。例如,请参见HashMap 请参见和地图界面可以满足您的要求。例如,请

在Java中

例如,如何将一组数字集成器映射到另一组数字? 所有的数字都是正数,并且所有的数字在它们自己的集合中都是唯一的

第一组数字可以有任何值,第二组数字表示数组的索引,因此目标是能够通过第一组数字访问第二组数字。这是一对一的关系

速度至关重要,因为该方法必须每秒调用多次


编辑:我尝试使用SE hashmap实现,但发现速度很慢。

听起来hashmap就是您要找的。

听起来hashmap就是您要找的。

地图界面可以满足您的需求。例如,请参见HashMap


请参见和

地图界面可以满足您的要求。例如,请参见HashMap


请参见和

您要查找的结构称为关联数组。在计算机科学中,关联数组、映射、符号表或字典是由键、值对集合组成的抽象数据类型,因此每个可能的键在集合中只出现一次

特别是在java中,如前所述,使用HashMap很容易做到这一点

HashMap<Integer, Integer> cache = new HashMap<Integer, Integer>();
您可以使用get检索一个值

如果要遍历数据,需要定义迭代器:

Iterator<Integer> Iterator = cache.keySet().iterator();

while(Iterator.hasNext()){
  Integer key = Iterator.next();
  System.out.println("key: " + key + " value: " + cache.get(key));
}

您要查找的结构称为关联数组。在计算机科学中,关联数组、映射、符号表或字典是由键、值对集合组成的抽象数据类型,因此每个可能的键在集合中只出现一次

特别是在java中,如前所述,使用HashMap很容易做到这一点

HashMap<Integer, Integer> cache = new HashMap<Integer, Integer>();
您可以使用get检索一个值

如果要遍历数据,需要定义迭代器:

Iterator<Integer> Iterator = cache.keySet().iterator();

while(Iterator.hasNext()){
  Integer key = Iterator.next();
  System.out.println("key: " + key + " value: " + cache.get(key));
}

有一篇文章专门讨论这个问题和解决方案:

代码可以在相关文档中找到。最佳结果在IntIntMap4a.java类中

文章引文:

总结

如果要优化哈希映射以提高速度,则必须尽可能多地执行下列操作:

使用容量等于2次方的基础阵列-它将允许您使用廉价而不是昂贵的%作为阵列索引 不要将状态存储在单独的数组中-对可用/删除的键和值使用专用字段。 在一个数组中交错键和值-这将允许您免费将值加载到内存中。 实施一种策略来清除“删除的”单元格-您可以牺牲一些删除性能来支持更频繁的获取/放置。 在计算初始单元索引时对密钥进行置乱-这是处理连续密钥的情况所必需的

是的,我知道如何使用引用格式。但它看起来很糟糕,不能很好地处理子弹清单


有一篇文章专门讨论这个问题和解决方案:

代码可以在相关文档中找到。最佳结果在IntIntMap4a.java类中

文章引文:

总结

如果要优化哈希映射以提高速度,则必须尽可能多地执行下列操作:

使用容量等于2次方的基础阵列-它将允许您使用廉价而不是昂贵的%作为阵列索引 不要将状态存储在单独的数组中-对可用/删除的键和值使用专用字段。 在一个数组中交错键和值-这将允许您免费将值加载到内存中。 实施一种策略来清除“删除的”单元格-您可以牺牲一些删除性能来支持更频繁的获取/放置。 在计算初始单元索引时对密钥进行置乱-这是处理连续密钥的情况所必需的

是的,我知道如何使用引用格式。但它看起来很糟糕,不能很好地处理子弹清单


如果您愿意使用外部库,那么可以使用apache,它是的一部分


它实现了一个非常高效的int-to-int映射,该映射使用原语来执行不应承受装箱开销的任务。

如果您愿意使用外部库,则可以使用apache,它是


它实现了一个非常高效的int-to-int映射,该映射使用原语来处理不应承受装箱开销的任务。

如果您对第一个列表的大小有限制,您可以使用一个大数组。假设您知道第一个列表只有数字0-99,您可以使用int[100]。使用第一个数字作为数组索引。

如果对第一个列表的大小有限制,可以使用大数组。假设您知道第一个列表只有数字0-99,您可以使用int[100]。使用第一个数字作为数组索引。

请举个例子好吗?HashMap我认为HashMap太慢了。但是是的,本质上它是一个整数之间的映射

会很慢吗?这是固定时间查找。什么比固定时间快?如果数组的访问速度比hashmap快,那么我需要尽可能多地压缩它的速度。请你举个例子好吗?hashmap我认为hashmap太慢了。但是是的,本质上它基本上是一个整数之间的映射。它怎么会慢呢?这是固定时间查找。什么比常数时间快?如果数组的访问速度比hashmap快,那么我需要尽可能多地压缩它的速度。@WinterBreeze你必须更具体一些。您应该在原始帖子中包含这些详细信息。@WinterBreeze HashMaps有O1访问时间。你不会比这更快的。@Rubixus是的,你是。这些常量对于他的情况来说不够好,实际上这种情况经常发生,因为装箱开销和太多的方法调用。常量确实很重要。@Rubixus我相信HashMap的访问时间是Olog n,而且自动装箱的开销可能会非常大,而且HashMap对捕获不友好,如果数组中没有太多记录,我最好只对数组进行线性迭代。@WinterBreeze您必须更具体一些。您应该在原始帖子中包含这些详细信息。@WinterBreeze HashMaps有O1访问时间。你不会比这更快的。@Rubixus是的,你是。这些常量对于他的情况来说不够好,实际上这种情况经常发生,因为装箱开销和太多的方法调用。常量很重要。@Rubixus我相信HashMap的访问时间是Olog n,而且自动装箱的开销可能会非常大,而且HashMap对捕获不友好,我最好只对数组进行线性迭代,如果其中没有太多的记录。这里最好的答案是关于一般的关联数组,特别是HashMap。这里最好的答案是关于一般的关联数组,特别是HashMap。