0

我有一个类似物品(比如玩具)的数组列表,我每天都会得到这些物品。

List<Toy> toyList;   

玩具豆将有四个属性,分别是名称、类型、代码、编号。

  • 代码可以是从 1 到 10 的任何整数(不需要我每天都得到所有代码)
  • 类型可以是字符串“一”或字符串“二”

我想输出一份总结玩具类型和代码的报告,如下所示:

One

name     type    number
--------------------------------
abc      1       19
pqr      1       20

Code 1 total     39

lmn      9       15

Code 9 total     15  

========================================  

Two

name     type    number
--------------------------------
hmn      6       18
efg      6       20

Code 6 total     38

jkl      5       15

Code 5 total     15 

为了从我拥有的列表中轻松创建这样的报告,我必须将列表分为两个级别:首先基于类型(一和二),然后基于今天可用的代码(并非所有代码每天都可用) .

实现这一目标的最有效方法是什么?

我可以通过迭代主列表并创建子列表来实现它。但是如何处理所有代码将不会每天可用的部分?如何仅为今天可用的代码创建子列表?

谢谢阅读!

4

3 回答 3

2

您可以遍历所有玩具并获取Set类型、代码等。您可能希望将其设为 SortedSet,以便它们以一致的顺序出现。

Set<Type> types = EnumSet.noneOf(Type.class);
SortedSet<String> codes = new TreeSet<String>();
for(Toy toy: toys) {
   types.add(toy.getType());
   codes.add(toy.getCode());
}
于 2012-07-17T10:56:05.023 回答
1

查看 Lambdaj 库分组功能(滚动到分组项目部分)。

于 2012-07-17T11:19:25.063 回答
0

您可以尝试使用这些库中的任何一个:

于 2012-07-17T11:29:14.227 回答