Problemy z Collections.sort i compareTo

0

Mam pytanie dotyczące metody Collections.sort(). Chce z jej pomocą posortować obiekty znajduące się w ArrayList . W tej kolekcji znajdują się obiekty klasy ala(kod poniżej ) która składa się z dwóch składowych x i y typu int . Chce by kryterium sortowania była składowa x każdego obiektu . I teraz rozumiem ze musze zaimplementować interfejs Comparable dla mojej klasy i przysłonić jedyną metodę comapreTO. Udało mi się osiągnąć zamierzony efekt w sposób który znajduję się poniżej ale mam parę pytań(wydaje mi sie poza tym że moje rozwiązanie jest słabe ale działa :) ) .

public  class ala implements Comparable{

    int x,y;

    public  ala(int a,int b){

        x=a;
        y=b;
    }

    @Override
    public int compareTo(Object o) {       

        ala w=(ala)o;     
        int a=-1;

        if(this.x>w.x){
            a=1;
        }         

        if(this.x==w.x){
            a=0;
        }
        return a;
    }      

    }

1) Czy dało by się w jakiś sposób uniknąć rzutowania??? "ala w=(ala)o;" ???
2)Porównywane składowe są typu integer a on implementuje przecież Comperable . Da się przekazać jakoś wartości do metody compareTO klasy integer ?

6

1) Poczytaj o generykach.
2) int nic nie impelementuje bo jest prymitywem. Klasa Integer już implementuje Comparable.

public  class Ala implements Comparable<Ala> {

  private final int x;
  private final int y;

  public  Ala(int x, int y) {
    this.x=x;
    this.y=y;
  }

  @Override
  public int compareTo(Ala that) {
    return Integer.compare(x, that.x);
  }
}

powinno działać

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0