哪个系列会这样做?

时间:2011-12-07 08:52:34

标签: java collections

我正在阅读以下数据 -

Year, No, Name, 
2009, 1, ABC
2009, 2, PQR
2009, 3, XYZ
2010, 1, BCD
2010, 2, DEF
2010, 3, JKL
2011, 1, FGH
2011, 2, IJK
2011, 3, LMN

它的一个样本,有上千种这样的类型。 我需要在JList中显示唯一的Year值,对于选定的Year,我必须提供一个CheckBox,如果选中,它将显示Name排序No ,否则按Name排序。

3 个答案:

答案 0 :(得分:3)

您需要的内容看起来像Map,密钥将是Year,而值将是NoNumber的列表(您需要创建自己的内容)类)。

然后您需要创建两个Comparator,一个基于Name,另一个基于No。因此,当选中复选框时,您使用基于Name的比较器对列表进行排序,如果未选中,则使用基于No的比较器对列表进行排序。

答案 1 :(得分:2)

Map<String, Set<YourStruct>> 

以年为关键? YourStruct - bean,持有年份,没有和名字。您可以使用Collections.sort()进行排序。

答案 2 :(得分:1)

我认为你也需要排序年份,所以顶级使用 TreeMap ,以年为关键,值将包含两个 TreeSet - 的on不,一个用于名称 - 它们只是通过向其添加值进行排序,而且它们不允许重复。

或者不创建包装类并使用两个TreeMaps - 这不是一个很大的区别。