使用Comparator在java中进行排序

use*_*681 -2 java set comparator

我正在尝试使用Comparator如下所示的排序集.

Set seatSet = tc.getTheatreSeat();
    List listArr = new ArrayList(seatSet);
    Collections.sort(listArr, new Comparator() {
        public int compare(Object arg0, Object arg1) {
            TheatreSeat r1 = (TheatreSeat) arg0;
            TheatreSeat r2 = (TheatreSeat) arg1;
            if (r2.getId() < r1.getId()) {
                return 1;
            }
            return 0;
        }
    });
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我的代码有什么问题请帮忙.

sor*_*oru 5

比较函数的返回值应为-1,0或+1,而不仅仅是1或0.

return Integer.compare(r1.getId(), r2.getId());
Run Code Online (Sandbox Code Playgroud)

代替if语句应该做的工作.

使用lambda的Java 8排序将是

listArr.sort(Comparator.comparing(e -> e.getId()));
Run Code Online (Sandbox Code Playgroud)