Java 可比非排序表的实现
我很难对我的对象进行排序 一些初步知识: 我使用MongoDB来存储我的收藏,我能够检索它们并正确地取回所有东西 我有一个实现Comparable的类,带有compareTo函数,但我也希望能够对不同的属性进行排序,因此我为每个要排序的属性添加了静态可比性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
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"));
}