从对象列表中分离子列表

时间:2012-07-17 10:53:48

标签: java list collections

我有一个类似物品(比如玩具)的arraylist,我每天都会得到它。

List<Toy> toyList;   

玩具bean将有四个属性,如名称,类型,代码,数字。

  • 代码可以是1到10之间的任何整数(不一定每天都能得到所有代码)
  • type可以是字符串“one”或字符串“two”

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

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 

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

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

我可以通过遍历主列表并创建子列表来实现它。但是如何处理所有代码每天都无法使用的部分?如何仅为今天可用的代码创建子列表?

感谢阅读!

3 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:1)

查看Lambdaj库grouping feature(滚动到分组项目部分)。

答案 2 :(得分:0)

您可以尝试使用以下任何库: