Java 从SortedSet中移除最后一个元素
在运行remove方法之前和之后打印Java 从SortedSet中移除最后一个元素,java,jsp,jakarta-ee,set,Java,Jsp,Jakarta Ee,Set,在运行remove方法之前和之后打印roomBookings集时,该集包含完全相同的元素。因此,bb.getBooking().getRoomBookings().remove(r)不起作用。我使用java.util.SortedSet实现为java.util.TreeSet。有什么建议解释为什么这不起作用吗 for(RoomBookingDTO r : bb.getBooking().getRoomBookings()) { if(r.getLocalId() == b
roomBookings
集时,该集包含完全相同的元素。因此,bb.getBooking().getRoomBookings().remove(r)代码>不起作用。我使用java.util.SortedSet
实现为java.util.TreeSet
。有什么建议解释为什么这不起作用吗
for(RoomBookingDTO r : bb.getBooking().getRoomBookings()) {
if(r.getLocalId() == bb.getCurrentRoomNumber()) {
System.out.println("kom hit");
bb.getBooking().getRoomBookings().remove(r);
}
}
我很怀疑您将当前房间号与getRoomBookings().size()
和房间预订ID进行比较。RoomBookingDTO
是否正确执行equals()
和hashCode()
?这只是一个小问题。它用于在特定状态下处理用户单击退格。这并不重要。但是RoomBookingDTO
是否正确地实现equals()
和hashCode()
?我在最后添加的代码可以正常工作。我猜这回答了你的问题,定义为“不起作用”。我猜你得到了一个ConcurrentModificationException。并显示您的代码,而不是让我们猜测。RoomBookingDTO的compareTo()方法很重要。
RoomBookingDTO roomBooking = createRoomBooking(request);
System.out.println("Before: " + bb.getBooking().getRoomBookings());
bb.getBooking().getRoomBookings().add(roomBooking);
System.out.println("Add: " + bb.getBooking().getRoomBookings());
bb.getBooking().getRoomBookings().remove(roomBooking);
System.out.println("After: " + bb.getBooking().getRoomBookings());