【发布时间】:2015-08-27 23:18:08
【问题描述】:
我正在从 Java 6 迁移到 Java 8,并注意到 Comparator 接口的一些特殊之处。对此的任何见解都会非常有帮助。
当我切换到 Java 8 时,对象的顺序在“比较”方法中被切换,列表排序失败。我回到java 6,它工作得很好。这是一个测试用例,我在 Java 8 中失败,在 Java 6 中通过。
public class ComparitorTest {
@Test
public void comparatorTest(){
Record record1 = new Record("First", false);
Record record2 = new Record("Second", true);
List<Record> list = new ArrayList<Record>();
list.add(record1);
list.add(record2);
final Comparator<Object> recordComparator = new Comparator<Object>()
{
public int compare( Object o1, Object o2 )
{
Record r1 = (Record) o1;
Record r2 = (Record) o2;
Boolean isReadonly_R1 = r1.getIsReadOnly();
Boolean isReadOnly_R2 = r2.getIsReadOnly();
if( isReadonly_R1.equals( Boolean.TRUE ) )
{
return 0;
}
else
{
return 1;
}
}
};
Collections.sort(list, recordComparator);
assertEquals(list.get(0).name, "Second");
assertEquals(list.get(1).name, "First");
}
class Record {
boolean isReadOnly;
String name;
public Record(String name, boolean value) {
isReadOnly =value;
this.name = name;
}
boolean getIsReadOnly() {
return isReadOnly;
}
}
}
你们对此的任何见解都会非常有帮助
【问题讨论】:
标签: java sorting java-8 comparator java-6