Java集合-存储多个信息

Java集合-存储多个信息,java,Java,这样存储多个信息好吗: List<Map<Integer, Object>> l = new ArrayList<Map<Integer, Object>>(); Map<Integer, Object> m = new HashMap<Integer, Object>(); m.put(123, null); l.add(m); 我想还有更好的办法 在我的例子中,我需要存储一个类别列表,以及每个类别使用该类别的文章数。

这样存储多个信息好吗:

List<Map<Integer, Object>> l = new ArrayList<Map<Integer, Object>>();

Map<Integer, Object> m = new HashMap<Integer, Object>();
m.put(123, null);
l.add(m);
我想还有更好的办法


在我的例子中,我需要存储一个类别列表,以及每个类别使用该类别的文章数。

那么为什么不使用一个列表,其中CategoryUsage是一个包含类别的类,以及使用它的文章数?更具可读性、类型安全性、可维护性和面向对象性的IMHO。

若您想为我将使用的每个类别存储文章计数

Map<Category, Integer> categoryCountMap = ...

我认为你走对了路。但您也可以在类中封装其他信息,并放置对象列表

像这样

Class CategorieModel{
   private Integer articlies;
   private Categories categories; 
//Constructors

//getters and setters

}

List<CategorieModel> m  = new ArrayList<CategorieModel>();

m.add(new CategorieModel(111,null));

你需要更清楚你使用的术语。什么是类别,什么是文章

在您的示例中:

List<Map<Integer, Object>> l = new ArrayList<Map<Integer, Object>>();

Map<Integer, Object> m = new HashMap<Integer, Object>();
m.put(123, null);

您想在类别和文章之间建立多对多关系吗?如果是这样,我建议您:

Map<Category, Set<Article>>
这样,对于每个类别,如果您想知道该类别的文章数量,只需检查映射到该类别的集合的大小。然而,如果你想知道一篇文章属于多少个类别,那么你必须通过检查每一个类别并检查集合是否包含你感兴趣的文章来计算出来

更新

你在评论中提到Hibernate,也许你想要的是一种双向的多对多关系?i、 e.您的类别对象将包含该类别中的文章集合,而您的文章对象将包含它所属的类别集合

如果是这种情况,请检查以下问题:


对于双向多对多关系的讨论。

我将使用番石榴的多重映射

获取一个类别中的所有文章;收藏

categoryToArticles.get(category); 
获取类别中的文章数

categoryToArticles.get(category).size();

你所说的类别列表是什么意思?类别存储在我的数据库中。它只是一个休眠对象。在这个词广泛流行之前,我不会停止发布这个链接-
categoryArticleRef.get(category).size(); // need NPE check, etc
Map<Category, Set<Article>>
Multimap<Category, Article> categorysToArticles = HashMultimap.create();
categoryToArticles.put(category, article);
categoryToArticles.get(category); 
categoryToArticles.get(category).size();