Java高效可序列化多对一地图

时间:2016-06-08 12:53:45

标签: java

我的数据是多对一的关系。

// 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<Integer,Integer>中。然后我会进行两次查找,首先是index,另一次是数组中的值。

1 个答案:

答案 0 :(得分:1)

需要考虑的两件重要事情:

a)如果你只是关注序列化太多&#34;由于重复的哈希值...您可以通过简单地创建自定义序列化代码来防止这种情况。含义:不是直接序列化这个地图,而是序列化:所有值(一次),然后是&#34;实际&#34;以更有效的方式进行映射。这样做可以让你的其他代码保持不变。

b)退出当前的设计/实施。含义:也许使用这个简单的地图进行抽象是有意义的;并且通过内部更加明显地提供关于关系通过多个地图值的信息。你知道,如果你处理单个地图,但是有一个代表所有知识的类(类似于我上面提到的#34; a)&#34;。

显然&#34; a)&#34;可能是&#34;更本地化的&#34;改变,但距离10000英里远......我很想建议你专注于&#34; b)&#34;。