使用列表升序排序
Sorting ascending with list
我正在练习比较器和接口,我很难用它。我正在尝试创建一个布尔方法,如果列表按升序排列,则 returns 为真。
但出于某种原因,如果我使用 Collections.sort
.
,我会收到错误消息
我的代码中到底缺少什么?为什么它不起作用?
代码如下:
构造函数
public class Stijgen implements RijtjesControle{
private int nummer;
public Stijgen(int nummer) {
this.nummer = nummer;
}
public int getNummer() {
return nummer;
}
主要
public static void main(String[] args) {
List<Stijgen> rijtje = new ArrayList<Stijgen>();
rijtje.add(new Stijgen(4){});
rijtje.add(new Stijgen(7){});
rijtje.add(new Stijgen(1){});
rijtje.add(new Stijgen(9){});
rijtje.add(new Stijgen(3){});
System.out.println("Eerst de getallen op een rijtje zoals het nu is:");
for (Stijgen rijtje1 : rijtje) {
System.out.println(rijtje1.getNummer());
}
System.out.println("Nu gesorteed op stijgende volgorde");
Collections.sort(rijtje);
for (Stijgen rijtje1 : rijtje) {
System.out.println(rijtje1);
}
}
@Override
public <Stijgen extends Comparable<Stijgen>> boolean isStijgend(List<Stijgen> rijtje) {
Iterator<Stijgen> iter = rijtje.iterator();
if(!iter.hasNext()){
return true;
}
Stijgen stijgen = iter.next();
while(iter.hasNext()){
Stijgen stijgen1 = iter.next();
if(stijgen.compareTo(stijgen1) > 0){
return false;
}
stijgen = stijgen1;
}
return true;
}
}
当 Stijgen 没有实现 Comparable 接口时,你不能使用 java.util.Collections.sort(List),除非你使用带有 Stijgen 的比较器作为第二个参数的排序方法:java.util.Collections.sort (列表,比较器)
// copy of rijtje
List<Stijgen> sorted = new ArrayList<Stijgen>(rijtje);
// sort copy by comparator
// JAVA8: Collections.sort(sorted, (a, b) -> a.getNummer() - b.getNummer());
Collections.sort(sorted, new Comparator<Stijgen>() {
@Override
public int compare(Stijgen a, Stijgen b) {
return a.getNummer() - b.getNummer();
}
});
// check if rijtje is sorted
System.out.println(rijtje.equals(sorted));
我正在练习比较器和接口,我很难用它。我正在尝试创建一个布尔方法,如果列表按升序排列,则 returns 为真。
但出于某种原因,如果我使用 Collections.sort
.
我的代码中到底缺少什么?为什么它不起作用?
代码如下:
构造函数
public class Stijgen implements RijtjesControle{
private int nummer;
public Stijgen(int nummer) {
this.nummer = nummer;
}
public int getNummer() {
return nummer;
}
主要
public static void main(String[] args) {
List<Stijgen> rijtje = new ArrayList<Stijgen>();
rijtje.add(new Stijgen(4){});
rijtje.add(new Stijgen(7){});
rijtje.add(new Stijgen(1){});
rijtje.add(new Stijgen(9){});
rijtje.add(new Stijgen(3){});
System.out.println("Eerst de getallen op een rijtje zoals het nu is:");
for (Stijgen rijtje1 : rijtje) {
System.out.println(rijtje1.getNummer());
}
System.out.println("Nu gesorteed op stijgende volgorde");
Collections.sort(rijtje);
for (Stijgen rijtje1 : rijtje) {
System.out.println(rijtje1);
}
}
@Override
public <Stijgen extends Comparable<Stijgen>> boolean isStijgend(List<Stijgen> rijtje) {
Iterator<Stijgen> iter = rijtje.iterator();
if(!iter.hasNext()){
return true;
}
Stijgen stijgen = iter.next();
while(iter.hasNext()){
Stijgen stijgen1 = iter.next();
if(stijgen.compareTo(stijgen1) > 0){
return false;
}
stijgen = stijgen1;
}
return true;
}
}
当 Stijgen 没有实现 Comparable 接口时,你不能使用 java.util.Collections.sort(List),除非你使用带有 Stijgen 的比较器作为第二个参数的排序方法:java.util.Collections.sort (列表,比较器)
// copy of rijtje
List<Stijgen> sorted = new ArrayList<Stijgen>(rijtje);
// sort copy by comparator
// JAVA8: Collections.sort(sorted, (a, b) -> a.getNummer() - b.getNummer());
Collections.sort(sorted, new Comparator<Stijgen>() {
@Override
public int compare(Stijgen a, Stijgen b) {
return a.getNummer() - b.getNummer();
}
});
// check if rijtje is sorted
System.out.println(rijtje.equals(sorted));