0

我正在使用休眠从数据库中检索数据。我的 UI 在表格中显示不同的列。我想在列上实现排序功能。此图标应显示在列上

在触发图标时,名称应按 AZ 和 ZA 进行排序。

请帮助我。

4

1 回答 1

1

您可以使用 a 对数据进行排序Comparator(假设您不想访问数据库)。假设您的 UI 上显示了一个Category实例列表 ( ):categoryList

class Category{
private Long id;
private String categoryName;
private String otherProperty;
}

现在您可以使用接口定义自定义策略来对您的实例中存在的实例Comparator进行排序:CategoryCategory list

class StartegyOne implements Comparator<Category> {

    @Override
    public int compare(Category c1, Categoryc2) {
        return c1.getCategoryName().compareTo(c2.getCategoryName());
    }

}

StrategyOne将根据它们的字典顺序对类别进行排序categoryNames;这可以通过以下方式实现Collections.sort

Collections.sort(categoryList, AN_INSTANCE_OF_StrategyOne);

您可以考虑将此类的实例存储Strategy在私有静态最终字段中并重用它:

/*This is the class that receives the sort action*/
class SortActionHandler{

private static final Comparator<Category> CATEGORY_ORDER = 
                                        new Comparator<Category>() {
            public int compare(Category c1, Categoryc2) {
                return c1.getCategoryName().compareTo(c2.getCategoryName());
            }
    };

//call this method to sort your list according to category names
private void sortList(List<Category> categoryList){
Collections.sort(categoryList, CATEGORY_ORDER);
}
}
于 2013-09-11T08:05:45.447 回答