【问题标题】:How to generate an unique number from a given four numbers and getting these given numbers back from generated unique number?如何从给定的四个数字生成一个唯一的数字,并从生成的唯一数字中取回这些给定的数字?
【发布时间】:2014-05-12 09:35:38
【问题描述】:

我在 java 中使用了 Map(String,Integer)。 键是由四个给定数字的字符串连接生成的。

givenNumber1 最多 6 位数字, givenNumber2 最多 4 位数字, givenNumber3 最多 4 位数字, givenNumber4 最多 4 位。

由于内存成本,我想在 java 中使用 Map(Integer,Integer)。 现在如何从给定的四个数字生成一个唯一的数字 那么如何从这个生成的数字中取回这四个数字呢?

有没有一种高效的(内存,cpu)方法来做到这一点?

【问题讨论】:

  • 当您说最多 6 位时,您的意思是正好 6 位吗? 0 有效吗?
  • 是的 0 可以是有效的。第一个给定数字包含排列数,它可以从 0 开始到最多 100000 个排列。我认为第四个给定数字存储在最后 4 位数字中。第二个给定号码可以容纳在最后 8、7、6 和 5 位。这样下去,我需要Long。
  • 如果你想提高内存效率,我会使用TLongIntHashMap
  • 谢谢。我听说过特罗夫。我想知道不使用 Long 的任何其他方式。
  • Guava 有一个基于原语的集合。

标签: java memory map key


【解决方案1】:

Integer.Max 是 2,147,483,647(10 位),在您的示例中,您希望输入 6 + 4 + 4 + 4 位 所以你的最大数字比 max int 10 位和 18 位要大得多。

所以不可能简单地将你的 map 从 Map 替换为 Map

【讨论】:

  • Map 可以使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 2023-03-15
相关资源
最近更新 更多