【发布时间】:2021-12-26 16:41:02
【问题描述】:
嘿,我得到了这个小代码 sn-p,当我运行我的程序时它不起作用。我有一个包含对象的列表,并希望首先将它们按 2 种类型分开,然后按其名称的字母顺序对它们进行排序。但是当我运行程序时,总是会出现这个 java 错误,上面写着:比较方法违反了它的一般合同! 我真的希望有人可以帮助我。
List<RandomObject> list;
list.stream().sorted((o1, o2) -> {
if(o1.getClass().equals(o2.getClass))
return o1.getName().compareTo(o2.getName());
if(o1.getClass == someClass1.class && o2.getClass() == someClass2.class)
return -1;
return 1;
})
【问题讨论】:
-
list包含哪些对象?除了someClass1和someClass2之外,它还有别的吗? -
@Sweeper 是的,它不仅包含 2 种类型的对象,但其中只有 2 种对我来说很重要,其他的你可以说是“隐藏的”。
-
什么是
RandomObject?getName()方法在哪里定义?someClass1和someClass2变量是如何定义的?为什么你认为你的“隐藏”对象不会造成问题?
标签: java sorting comparator