Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可比非排序表的实现_Java_Mongodb_List_Sorting_Comparator - Fatal编程技术网

Java 可比非排序表的实现

Java 可比非排序表的实现,java,mongodb,list,sorting,comparator,Java,Mongodb,List,Sorting,Comparator,我很难对我的对象进行排序 一些初步知识: 我使用MongoDB来存储我的收藏,我能够检索它们并正确地取回所有东西 我有一个实现Comparable的类,带有compareTo函数,但我也希望能够对不同的属性进行排序,因此我为每个要排序的属性添加了静态可比性 public class PlaceHolder implements Comparable<PlaceHolder>{ private String name; private String icon; private Str

我很难对我的对象进行排序

一些初步知识: 我使用MongoDB来存储我的收藏,我能够检索它们并正确地取回所有东西

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

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());
    }
};
}
我看不出哪里出了问题。 我已经调试了可比数据,它们似乎很有效,返回了否定和肯定。但这份名单似乎没有得到整理

我在我的控制器中使用GetAllPlaceholder,将其传递给我的页面处理程序,页面处理程序反过来为表视图生成html

public class PlaceHolderControllerF extends ControllerAbF {

@Autowired PlaceHolderRepo pr;

@RequestMapping(value = "placeholderlist", method = RequestMethod.GET)
@ResponseBody
public String editLanguage(HttpSession httpSession) {
    if (getUser(httpSession) == null) {
        return noPermission();
    }
    return Pages.getPlaceHolderList(pr.getAllPlaceholders("name"));
}

Pages只是获取我的索引html,将一些变量传递给它,然后通过我的模板器将变量填充到html中。

你能展示一下你是如何使用
getAllPlaceholders
方法的吗?如果你使用的是自定义comperator,尽管,为什么要实现该接口?@StefanCandan您没有在
pr.getAllPlaceholders()
中传递排序类型。这是一种不同的方法吗?@StefanCandan以及
Pages.getPlaceHolderList
的作用是什么?您还需要在
native
案例之后添加
break
{ "_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"}
public class PlaceHolderControllerF extends ControllerAbF {

@Autowired PlaceHolderRepo pr;

@RequestMapping(value = "placeholderlist", method = RequestMethod.GET)
@ResponseBody
public String editLanguage(HttpSession httpSession) {
    if (getUser(httpSession) == null) {
        return noPermission();
    }
    return Pages.getPlaceHolderList(pr.getAllPlaceholders("name"));
}