按公钥分组对象

时间:2010-04-07 14:49:42

标签: java list map

我有一份客户列表。每个客户都有一个地址,有些客户实际上可能有相同的地址。我的最终目标是根据客户的地址对客户进行分组。我想我可以将客户放在某种基于列表的结构中并对地址进行排序,或者我可以将对象放到某种允许每个键有多个值的地图中。

我现在要拍出漂亮的照片:

List:
A1 - C1, A1 - C2, A2 - C3, A3 - C4, A3 - C5

Map:
A1 A2 A3
C1 C3 C4
C2    C5

您认为哪种选择(或其他任何选项)是最佳解决方案?是否有任何现有的课程可以使开发更容易?

2 个答案:

答案 0 :(得分:4)

您可以使用Map<K, Collection<V>>,其中K是地址,V是客户。另一个选项是Google Collections Multimap<K, V>,它是Map<K, Collection<V>>的一个更方便的包装器。

答案 1 :(得分:1)

您可以使用Lambdaj的组方法完成此操作。像这样:

Group<Customer> custByAddr = group(customers, by(on(Customer.class).getAddress().getId())

然后,您可以通过致电custByAddr.find("addressId1")

按组获取客户列表

在“分组项目”部分的http://code.google.com/p/lambdaj/wiki/LambdajFeatures处阅读更多内容。

我没有测试过这个,但它应该给你一个起点。我多次使用过LambdaJ,它非常有用。