Компаратор сочинительства для сортировать на колонках
Возможность написать родовой компаратор который позволяет для сортировать данных основанных на выбранной колонке в или ОНем восходящ или ничходящем заказе когда тип данным по колонки не знан upfront.
Когда я смотрел на с снабубежать способность вид основанный на колонках, я осуществил что я должно снабдить компаратор который основал на сортируя критериях может сортировать в или ОНем восходящ или ничходящем заказе. Также тип данных колонок может быть друг. Так если я пишу компаратор для шнура, то, он не будет работать для поля интежера. Тем ме менее по мере того как я не знал тип данных колонки заранее, я должен создать что-то родовое которое работало везде. И моя константа стремится создать что-то просто.
Здесь чем я пришел вверх с:
Comp типа снабжает компаратор {
rvalue int;
Cf шнура;
Булевское corder;
Comp публики (compfld шнура, булевский заказ) {
cf = compfld;
corder = заказ;
}
публика int сравнивает (предмета предмет во-первых, во-вторых) {
попытка {
Соответствующие cFirst = null, cSecond = null;
cFirst = (соответствующее) first.getClass () .getField (cf) .get (сперва);
cSecond = (соответствующее) second.getClass () .getField (cf) .get (во-вторых);
возвращение (corder.booleanValue ())? cFirst.compareTo (cSecond): cSecond.compareTo (cFirst);
} задвижка (исключение e) {
ход новое RuntimeException («инвалидный пройденный предмет»);
}
}
}
Этот компаратор пройден на имя поля/колонки для того чтобы сравнить, как шнур, и он fetches данные по колонки от предмета и сравнивает с соответствуя информацией от другого предмета. Здесь по мере того как вы можете увидеть каждый пример предмета содержит всю информацию для рядка данных. Настолько один рядок составляет карту до один пример предмета.
Сохранено под програмным обеспечением Java |
|
RSS 2.0 |
Посылайте эту статью по электронной почте
Вы можете также полюбить прочитать |


Добавьте к фаворитам Technorati


































7-ое января 2008 на 8:08 am
Высоко
Я пробую снабдить Код вы послали. Можете вы пожалуйста показать мне как я вызвал бы метод Coolections.sort используя компаратор вы написали выше. Я имею предмет значения при поля и вызванные методы геттера и сеттера ProductVO. Я как раз хочу сортировать ArrayList ProductVO основанное на одном из своих вызванных полей lastname. Однако я не хочу написать специфический компаратора к ProductVO только использовать ваш компаратор для того чтобы сортировать любой тип списка блока VOs.