在这种情况下使用什么Java集合?

在这种情况下使用什么Java集合?,java,android,collections,Java,Android,Collections,我是Java新手,正在尝试找出使用什么Java集合将从JSON获得的值展平到Java集合中,但不知道使用哪个集合。以下是我从JSON获得的信息: 用户:蒂姆 产品:啤酒 用户:蒂姆 产品:面包 用户:蒂姆 产品:牛奶 用户:蒂姆 产品:香皂 用户:迈克尔 产品:香皂 用户:迈克尔 产品:咖啡 用户:迈克尔 产品:汽车 用户:韦恩 产品:面包 用户:韦恩 产品:香皂 如您所见,我的用户拥有以下产品: 蒂姆:啤酒,面包,牛奶,肥皂 迈克尔:肥皂、咖啡、汽车 韦恩:面包,肥皂 什么是存储这些产品的最佳

我是Java新手,正在尝试找出使用什么Java集合将从JSON获得的值展平到Java集合中,但不知道使用哪个集合。以下是我从JSON获得的信息:

用户:蒂姆 产品:啤酒

用户:蒂姆 产品:面包

用户:蒂姆 产品:牛奶

用户:蒂姆 产品:香皂

用户:迈克尔 产品:香皂

用户:迈克尔 产品:咖啡

用户:迈克尔 产品:汽车

用户:韦恩 产品:面包

用户:韦恩 产品:香皂

如您所见,我的用户拥有以下产品: 蒂姆:啤酒,面包,牛奶,肥皂 迈克尔:肥皂、咖啡、汽车 韦恩:面包,肥皂

什么是存储这些产品的最佳集合,以便我可以确定一个用户持有的所有产品

例如,通过提供Key=Michael,我将获得肥皂、咖啡和汽车


非常感谢,

取决于您的数据用例。地图似乎是个不错的选择。

取决于数据的使用情况。似乎地图是个不错的选择。

我会使用多重地图,因为一个人可能有多个产品

您可以在以下位置找到一个相当简单的示例:

所以你可能会得到这样的结果:

Multimap<String,String> myMap = new Multimap<>();
myMap.put("Tim", "Beer");
myMap.put("Tim", "Bread");
myMap.put("Tim", "Milk");

我会使用多重地图,因为一个人可能有多个产品

您可以在以下位置找到一个相当简单的示例:

所以你可能会得到这样的结果:

Multimap<String,String> myMap = new Multimap<>();
myMap.put("Tim", "Beer");
myMap.put("Tim", "Bread");
myMap.put("Tim", "Milk");

这实际上取决于您想要如何实现这一点。你有列表、地图、堆、树、图……就个人而言,我会使用
HashMap
,但这实际上取决于你需要如何访问数据。另一种选择是布尔的“矩阵”(2d数组),其中每行是一个人,每列是一个乘积。恐怕这个问题太宽泛了。谢谢宋楚瑜,我想HashMap不允许重复键??您介意提供更多关于如何实现HashMap的细节吗?非常感谢您的
ArrayList
将包含
字符串
“Beer”、“Bread”、“Milk”等。然后键“Tim”将映射到此列表。如果用户是唯一的,只需使用HashMapIt,这实际上取决于您希望如何实现它。你有列表、地图、堆、树、图……就个人而言,我会使用
HashMap
,但这实际上取决于你需要如何访问数据。另一种选择是布尔的“矩阵”(2d数组),其中每行是一个人,每列是一个乘积。恐怕这个问题太宽泛了。谢谢宋楚瑜,我想HashMap不允许重复键??您介意提供更多关于如何实现HashMap的细节吗?非常感谢您的
ArrayList
将包含
字符串
“Beer”、“Bread”、“Milk”等。然后键“Tim”将映射到此列表。如果用户是唯一的,只需使用HashMapThank Shreyas,但我知道HashMap不允许重复键Yes。hashmap将把key作为用户,把value作为产品的ArrayList
hashmap
谢谢Shreyas,但是我知道hashmap不允许使用dupllicate key yes。hashmap将键作为用户,值作为产品的ArrayList
hashmap
Beer
Bread
Milk