Java HashMap<;整数,整数>;vs int[]
我有一个大小为10000的整数数组,它逐渐被其他整数填充(上下文:),但不够大。我计划用HashMap替换它,并且想知道这是否比任意增大数组(例如,将大小增加到100000)更好 另外,HashMap和整数数组之间的主要区别是什么Java HashMap<;整数,整数>;vs int[],java,arrays,hashmap,Java,Arrays,Hashmap,我有一个大小为10000的整数数组,它逐渐被其他整数填充(上下文:),但不够大。我计划用HashMap替换它,并且想知道这是否比任意增大数组(例如,将大小增加到100000)更好 另外,HashMap和整数数组之间的主要区别是什么 注意:在这种情况下,HashMap/数组中只使用奇数键。显然,两者都提供了从整数子集到整数的映射。有几个不同之处,但简单的回答是,数组可能更适合密集键,而哈希映射适合稀疏键 对于数组,您使用的每个键的内存开销为32位,但是HashMap的几倍。在该范围内但不使用的每个
注意:在这种情况下,HashMap/数组中只使用奇数键。显然,两者都提供了从整数子集到整数的映射。有几个不同之处,但简单的回答是,数组可能更适合密集键,而哈希映射适合稀疏键 对于数组,您使用的每个键的内存开销为32位,但是HashMap的几倍。在该范围内但不使用的每个键的内存开销对于数组也是32位,但是对于HashMap可能接近于零 阵列访问将比HashMap访问更快 如果您希望使用多达50%的条目,那么使用数组会更好。如果只需要奇数键,数组较大,请考虑使用数组索引<代码>(I-1)/ 2 < /代码>来表示元素的键<代码> i < /代码> ./p> 找到哪一个更适合您的情况的最佳方法,包括找到在它们之间切换的密度阈值,是通过测试。这是我将遵循的程序:
显然,两者都提供了从整数子集到整数的映射。有几个不同之处,但简单的回答是,数组可能更适合密集键,而哈希映射适合稀疏键 对于数组,您使用的每个键的内存开销为32位,但是HashMap的几倍。在该范围内但不使用的每个键的内存开销对于数组也是32位,但是对于HashMap可能接近于零 阵列访问将比HashMap访问更快 如果您希望使用多达50%的条目,那么使用数组会更好。如果只需要奇数键,数组较大,请考虑使用数组索引<代码>(I-1)/ 2 < /代码>来表示元素的键<代码> i < /代码> ./p> 找到哪一个更适合您的情况的最佳方法,包括找到在它们之间切换的密度阈值,是通过测试。这是我将遵循的程序:
显然,两者都提供了从整数子集到整数的映射。有几个不同之处,但简单的回答是,数组可能更适合密集键,而哈希映射适合稀疏键 对于数组,您使用的每个键的内存开销为32位,但是HashMap的几倍。在该范围内但不使用的每个键的内存开销对于数组也是32位,但是对于HashMap可能接近于零 阵列访问将比HashMap访问更快 如果您希望使用多达50%的条目,那么使用数组会更好。如果只需要奇数键,数组较大,请考虑使用数组索引<代码>(I-1)/ 2 < /代码>来表示元素的键<代码> i < /代码> ./p> 找到哪一个更适合您的情况的最佳方法,包括找到在它们之间切换的密度阈值,是通过测试。这是我将遵循的程序:
显然,两者都提供了从整数子集到整数的映射。有几个不同之处,但简单的回答是,数组可能更适合密集键,而哈希映射适合稀疏键 对于数组,您使用的每个键的内存开销为32位,但是HashMap的几倍。在该范围内但不使用的每个键的内存开销对于数组也是32位,但是对于HashMap可能接近于零 阵列访问将比HashMap访问更快 如果您希望使用多达50%的条目,那么使用数组会更好。如果只需要奇数键,数组较大,请考虑使用数组索引<代码>(I-1)/ 2 < /代码>来表示元素的键<代码> i < /代码> ./p> 找到哪一个更适合您的情况的最佳方法,包括找到在它们之间切换的密度阈值,是通过测试。这是我将遵循的程序:
public class Book{}
HashMap<String, Book> books = new HashMap<String, Book>(); // mapping from a string(=key) to a Book object(=value)
books.put("Harry Potter", new Book());
// etc.