实现Comparable not sorting List

时间:2015-12-07 09:16:00

标签: java mongodb list sorting comparator

我无法对对象进行排序。

一些初步知识: 我使用MongoDB来存储我的收藏品,我能够检索它们并正确地恢复所有内容。

我有一个使用compareTo函数实现Comparable的类,但我也希望能够对不同的属性进行排序,因此我为每个想要排序的属性添加了静态可比性。

MyWindow* myWindow = new MyWindow(this);
myWindow->show();

然后我编写了一个函数,它从我的mongodb获取所有占位符,并将它们返回到包含PlaceHolder对象的列表中。

public class PlaceHolder implements Comparable<PlaceHolder>{

private String name;
private String icon;
private String originalLangcode;

//Getters and setters + constructors here, these work 100%.

@Override
public int compareTo(PlaceHolder ph) {
    return this.getName().compareTo(ph.getName());
}

public static Comparator<PlaceHolder> nameComparator = new Comparator<PlaceHolder>() {
    @Override
    public int compare(PlaceHolder ph1, PlaceHolder ph2) {
        return ph1.getName().compareTo(ph2.getName());
    }
};

public static Comparator<PlaceHolder> iconComparator = new Comparator<PlaceHolder>() {
    @Override
    public int compare(PlaceHolder ph1, PlaceHolder ph2) {
        return ph1.getIcon().compareTo(ph2.getIcon());
    }
};

public static Comparator<PlaceHolder> nativeLangComparator = new Comparator<PlaceHolder>() {
    @Override
    public int compare(PlaceHolder ph1, PlaceHolder ph2) {
        return ph1.getNativeLang().compareTo(ph2.getNativeLang());
    }
};
}

我总是得到我的数据未分类:

public List<PlaceHolder> getAllPlaceholders(String sortType) {
    List<PlaceHolder> list = getPlaceholderList();
    switch(sortType) {
    case "name":
        Collections.sort(list, PlaceHolder.nameComparator);
        break;
    case "icon":
        Collections.sort(list, PlaceHolder.iconComparator);
        break;
    case "native":
        Collections.sort(list, PlaceHolder.nativeLangComparator);
        break;
    default:
        Collections.sort(list, PlaceHolder.nameComparator);
        break;
    }

    return list;

}

我没有看到出了什么问题。 我调试了可比对象,它们似乎有效,返回负面和正面。但该列表似乎没有被排序。

我在我的控制器中使用getAllPlaceholders,将其传递给我的页面处理程序,后者又为表格视图生成html。

{ "_id" : { "$oid" : "56653f82972552a4024814a3"} , "name" : "testHolder" , "icon" : "archive" , "originalLangcode" : "ENG"}
{ "_id" : { "$oid" : "5665427a97253f798067c57b"} , "name" : "doItHolder" , "icon" : "car" , "originalLangcode" : "ENG"}
{ "_id" : { "$oid" : "566545dd9725050a53b4a5a8"} , "name" : "testableHolder" , "icon" : "adjust" , "originalLangcode" : "ENG"}
{ "_id" : { "$oid" : "5665479b972511264f55aae1"} , "name" : "dataHolder" , "icon" : "hdd-o" , "originalLangcode" : "ENG"}

页面只获取我的索引html,将一些变量传递给它,然后运行我的模板,将变量填入html。

0 个答案:

没有答案