java中使用比较器的排序集
我试图使用比较器对集合进行排序,如下所示java中使用比较器的排序集,java,set,comparator,Java,Set,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
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;
}
});
Set seatSet=tc.getTheatreSeat();
List listArr=新阵列列表(seatSet);
Collections.sort(listArr,newcomparator(){
公共整数比较(对象arg0、对象arg1){
剧院电视台r1=(剧院电视台)arg0;
剧院座位r2=(剧院座位)arg1;
if(r2.getId()
但它不起作用。我的代码有什么问题请帮助。比较函数的返回值应该是-1、0或+1,而不仅仅是1或0
return Integer.compare(r1.getId(), r2.getId());
代替if语句应该完成这项工作
使用lambda的Java8排序是
listArr.sort(Comparator.comparing(e -> e.getId()));
它看起来很正确,应该大部分都能工作 为了理解比较器的int返回值,定义了3个结果:
使用step调试器在排序前检查列表,在排序后检查结果。1)缩进代码。2) “它不起作用”不是一个好的描述。3) 我们不知道您使用的是哪种类型的集合-大多数都不允许显式排序。4) 请编写一个简短但完整的程序来演示这个问题。它以什么方式不起作用?我看到您已将
集合的内容复制到列表中
,并试图对列表
进行排序,那么您为什么要调用post排序集合
?集合包含类剧场的对象,其中有值id rownumber等。我想用id对其进行排序。如何进行排序>很抱歉,我在这里发布了一个问题,因为我是新问题。请注意,通过减法进行比较的技术将失败,因为大的Enough数将导致整数溢出。见:
new Comparator() {
public int compare(Object val1, Object val2) {
int id1 = ((TheatreSeat) val1).getId();
int id2 = ((TheatreSeat) val2).getId();
return id1 - id2;
}
}