【问题标题】:Java generate a unique id from an unordered set/list of objects / valuesJava从对象/值的无序集/列表中生成唯一ID
【发布时间】:2018-01-23 05:22:06
【问题描述】:

下面是扫描仪。

  1. 我们如何从给定的无序集合/对象集(具有自己的 uid)中生成唯一 ID(字符串/数字)。

  2. 即使集合/集合中对象的顺序发生变化,如何确保生成的 id 始终相同。

我正在处理对象组,每个组都需要一个 uid,以表示其中存在的某些对象,无论对象的顺序如何,希望它有意义,提前感谢您的帮助。

【问题讨论】:

  • 您对此有何看法?
  • 假设您有一个对象 A,它由不同的对象(集合)组成。要检查对象 A 是否包含某个对象,您必须迭代整个集合,但使用 uid 您只需检查 uid 是否与所需的相同。
  • 集合中是否有(几乎)无限数量的可能对象(例如,每个对象代表一个随机字符串)?还是有限制(例如,每个对象代表一个国家,而世界上只有 200 个左右)?
  • 没有,集合中的对象数量有限~20个,每个对象都有自己的uid。
  • 假设您总共有 5 个对象,分别为 ob1、ob2、ob3、ob4、ob5,您创建的对象为 O1{ ob1,ob2} 和 O2{ob2,ob4,ob1} 和 O3{ob2, ob1}。有没有办法为对象 ob1 到 ob5 的集合生成 uid,记住 O1 和 O3 生成的 id 必须相同,因为它们具有相同的集合?

标签: java for-loop collections unique identification


【解决方案1】:

鉴于可能的对象数量非常有限,您可以轻松做到这一点。给每个对象一个 2 的幂(1、2、4、8、16 等)的值。然后,对于集合,只需对集合中对象的值求和。结果应该适合 32 位整数。

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多