Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA中是否有类似于JSON的数据结构?_Java_Json_Data Structures_Associative Array - Fatal编程技术网

JAVA中是否有类似于JSON的数据结构?

JAVA中是否有类似于JSON的数据结构?,java,json,data-structures,associative-array,Java,Json,Data Structures,Associative Array,我需要将键值对存储在键值对中,并根据数据的需要执行其他操作 我试图用java中的哈希映射实现这一点,但它并没有像我预期的那样工作。因为,我的数据有多个名称->值对,但哈希映射会不断用新的值覆盖名称键的值 比如说,我需要为一家在线商店存储一份产品列表及其详细信息。哪种数据结构有助于我实现这一目标?如何实现 TIA.如果你想要一个“通用”系列,为什么不使用番石榴呢 将键映射到值的集合,类似于映射,但其中 每个键可以与多个值相关联。你可以想象 多重映射的内容,可以是从键到非空的映射 价值集合。。。或者

我需要将键值对存储在键值对中,并根据数据的需要执行其他操作

我试图用java中的哈希映射实现这一点,但它并没有像我预期的那样工作。因为,我的数据有多个名称->值对,但哈希映射会不断用新的值覆盖名称键的值

比如说,我需要为一家在线商店存储一份产品列表及其详细信息。哪种数据结构有助于我实现这一目标?如何实现


TIA.

如果你想要一个“通用”系列,为什么不使用番石榴呢

将键映射到值的集合,类似于映射,但其中 每个键可以与多个值相关联。你可以想象 多重映射的内容,可以是从键到非空的映射 价值集合。。。或者作为键值对的单个“展平”集合

但是,听起来您可能真的希望将实体建模为具有适当属性等的适当对象。存储集合集合的集合将起作用,但您将失去使用行为/多态性等定义对象的一些好处

e、 g

列出产品=。。。
产品。添加(新书(…);
产品。添加(新Dvd(…);
(或者可能是库存项目id到对象实例的映射,或,或…)


我将JSON视为对象的表示(例如,类似XML)。如果需要传输或存储这些对象,请将它们转换为JSON或XML等格式。但是在您的程序中使用具有类型和行为的对象来管理它们。

您需要一个多映射,默认情况下在Java中不存在,但您可以在Guava或Apache Commons之类的库中找到它。

正如@maskacovnik所写的-使用您自己的类:)

顺便说一句,您还可以在java中使用JSON-

如果您需要一些容器,您也可以使用-将所有值保存为字符串,例如。 (对于多值键,可以使用csv等格式的值)

Hashmap数据结构示例:

name - name
surname - surname
functions - func1;funct2,etc..

虽然您需要读取键的值,但您可以通过
string.split(regex)

将它们解析为数组,redis server呢?它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集合和排序集合。您确实有json.org提供的java json库。您可以使用它。使用json库的问题是由于序列化和反序列化json字符串而带来的性能开销。谢谢Brian,我已经研究过了。我可以在没有模型类的情况下使用这个多重映射吗?您可以将它用于任何对象(只要正确定义了equals/hashCode),非常感谢。我快速阅读了它的文档,我认为这将是完美的。还有一件事,我可以将sql结果集转换为Guava多重映射吗?我应该这么认为。也许只是简单地遍历resultset,将每一行转换为一个对象,并在给定的键中写入它
name - name
surname - surname
functions - func1;funct2,etc..