Какая коллекция будет делать это? - PullRequest
1 голос
/ 07 декабря 2011

Я читаю следующие данные -

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

Это образец, есть тысячи таких. Мне нужно отобразить уникальное значение Year в JList, а для выбранного Year я должен предоставить CheckBox, который, если он выбран, будет отображать Name, отсортированный по No, в противном случае - Name.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2011

То, что вам нужно, выглядит как Map, ключом будет Year, а значением будет список No и Number (вам нужно создать свой собственный класс).

Затем вам нужно создать два Comparator, один основан на Name, другой - No.Поэтому, когда флажок установлен, вы используете компаратор на основе Name для сортировки списка, когда не отмечен, используйте компаратор на основе No для сортировки списка.

2 голосов
/ 07 декабря 2011
Map<String, Set<YourStruct>> 

с годом в качестве ключа?YourStruct - бин, год, номер и имя.Вы можете использовать Collections.sort () для сортировки.

1 голос
/ 07 декабря 2011

Полагаю, вам также нужно отсортировать годы, так как на верхнем уровне используется TreeMap с ключом в качестве года, значение будет вашим классом, заключающим два TreeSets - для Нет,один для Имени - они будут отсортированы только путем добавления значений к нему, плюс они не допускают дублирования.

Или не создавайте класс обертки и не используйте два TreeMaps - это не большая разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...