代码之家  ›  专栏  ›  技术社区  ›  Axel

按列表升序排序

  •  1
  • Axel  · 技术社区  · 7 年前

    我正在练习比较器和接口,我在这方面很难。我试图创建一个布尔方法,如果列表按升序排列,则返回true。

    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;
    }
    }
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   Jurgen De Landsheer    7 年前

    // 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));