java - 从值集合生成唯一 ID

标签 java uniqueidentifier

我想了解如何从 Java 对象集合中生成唯一 ID(字符串/数字等),这些对象可以是各种数据类型,如 String、BigDecimal、org.joda.time.LocalDate 或 org .joda.time.LocalDateTime 或任何自定义 java 对象。

生成的 id 应该基于 java 对象中的值,以便为具有相同值的两个集合生成相同的 id。类似于 sql group by 子句的东西。我想根据 (col1, col2, col3) 组生成一个唯一的 id,其中 col1、col2 和 col3 可以是任何数据类型。

最佳答案

如果类型不会改变,你可以使用一个唯一的键

String id = Arrays.toString(col1, col2, col3);

如果您需要它们是唯一的,即使是混合和匹配类型,您可以使用序列化生成二进制格式或

StringBuilder idsb = new StringBuilder();
for(Object o: arrayOfObjects) 
    idsb.append(o.getClass()).append(':').append(o).append(',');
String id = idsb.toString();

如果你有

Object col1 = "2012-04-19 12:13:46", col2 = "2012-05-02", col3 = "Andy";
String key = col1+"~"+col2+"~"+col3;

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

相关文章:

javascript - 为每个设备生成唯一的ID

javascript - 有没有一种方法可以缩短字符串唯一 ID 数组,同时仍确保唯一性?

java - 使用 SHA256withRSA 签名后如何验证 signatureBytes?

java - 迭代 Hashmap<String, ArrayList<String>>

java - 使用 servlet 处理多部分请求和普通请求

sql-server - 如何创建一个 SQL Server 表,其中的列及其值自动生成为 GUID

java 。每个访客的唯一标识符。怎么生成比较好?

java - Collectors.toSet() 是否总是返回 HashSet ?什么是契约(Contract)?

java - Hibernate 中 JTA、JPA 和普通 JDBC 的区别

c# - C# 和 SQL Server 中 int 到 guid 的不同转换