gpt4 book ai didi

java - 如何从相同的值生成唯一 ID

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:42 25 4
gpt4 key购买 nike

我需要找到一种方法,使一组值始终生成相同的 ID,并且它必须是唯一的。

这样做的主要原因是为了加快查询速度,之前我需要进行大量连接,而只进行一次比较。我知道我的领域,遗憾的是这些值(value)观并没有封闭(即,它们可以是任何东西)。

我尝试过散列,但根据定义,散列函数不能保证唯一性。有办法吗?

编辑:更多上下文

我在一个关联来自不同设备集的事件的系统中工作。

相关性是通过一些Events属性来计算的:

  • 从哪里来的。
  • 这是什么类型的 Activity 。
  • 由此产生的值(value),以及不同群体中同类事件的不同之处。

例如,想想这样的事情。想象一下我的设备是一台冰箱。它发送有关其内部温度和食物的事件。因此,假设我们按以下顺序接收事件:

Event1: {type: temperature, values: [{temperature: -1]}
Event2: {type: food, values: [{group: vegetable, name: brocollis, quantity: 2, weight: 0.1]}
Event3: {type: food, values: [{group: vegetable, name: lettuce, quantity: 1, weight: 0.1]}
Event4: {type: temperature, values: [{temperature: -5]}

temperature 类型的所有事件都必须相关,但 food 类型的相关性也由其 name 给出组。即,相关标识符的数量是可变的。

这种相关性保存在这样的结构中

@Entity
public class EventCorrelation {
@Id @GeneratedValue
@Audit
private Long id;

@ElementCollection
@CollectionTable(
name = "evt_corr_extra_id",
joinColumns = @JoinColumn(name = "correlation_id"))
@Column(name = "extra_id")
@LazyCollection(LazyCollectionOption.TRUE)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Collection<String> identifiers;
// getters/setters
}

我在标识符数组中保存标识相关性的值。我想加快搜索事件相关性的查询,我的第一个想法是从相关性 identifiers 创建一个唯一的 id。

我有一个知识数据库,它从给定的事件中知道某个属性是相关标识符。

有什么建议吗?

最佳答案

一种可能的解决方案是将您的值转换为字符串并使用某种保留的定界符连接它们,确保保留顺序。该字符串成为您的唯一 ID。

例如,值 1、“Bob”、7383.234、“{asdf}”和 2013-01-08 将具有以下唯一 ID:

"1|Bob|7383.234|{asdf}|2013-01-08"

这是一种 memoization技术。

关于java - 如何从相同的值生成唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com