gpt4 book ai didi

Java高效可序列化多对一映射

转载 作者:行者123 更新时间:2023-11-30 10:43:38 25 4
gpt4 key购买 nike

我有一个多对一关系的数据。

// My class with lot of data
class MyClass{}

Map<Integer, MyClass> idToClass = ...;
MyClass c = new MyClass();
idToClass.put(1, c);
idToClass.put(2, c);

map 被序列化并通过网络发送。我正在寻找考虑重复值的 map 的解决方法或实现。

这不仅仅是效率问题,将相同的值放在 map 中具有语义意义(我的程序必须产生正确的结果)。

编辑:我正在考虑将所有不同的值保存在一个数组中,并将映射保存在一个映射中 Map<Integer,Integer> .然后我会进行两次查找,第一次查找索引,另一个查找数组中的值。

最佳答案

需要考虑的两个重要事项:

a) 如果您只是因为哈希值重复而担心序列化“过多”……您可以通过简单地创建自定义序列化代码来防止这种情况发生。意思是:不是直接序列化这个映射,而是序列化:所有值(一次),然后以更有效的方式序列化“实际”映射。这样做可以让您的其他代码保持不变。

b) 退出当前的设计/实现。意思是:也许从这个简单的 map 中抽象出来是有意义的;并使有关通过多个映射值的关系的信息在内部更加明显。您知道,如果您不是处理单个 map ,而是处理代表所有知识的类(类似于我在上面为“a)建议的方式”。

显然“a)”可能是“更本地化”的变化,但从 10000 英里以外……我很想建议您关注“b)”。

关于Java高效可序列化多对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37703094/

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