• 0
  • cytuj |

  • Hej!
    Mam pytanie jak posortowć listy najpierw biorac pod uwage czas1 (od najmniejszego), a potem czas2. Mam takie klasy:

    Class Lista{
    LinkedList <Czasy> lista;

    Lista(){
    lista=new LinkedList<Czasy>();
    }

    void dodajElement(double czas1, double czas2){
    lista.add(new Proces(czasW, czasN));
    }
    }

    class Czasy {
    double czas1;
    double czas2;

    Czasy (double czas1, double czas2){
    this.czas1=czas1;
    this.czas2=czas2;
    }
    }
    d41d8cd98f00b204e9800998ecf8427e
  • akul  
    unus multorum
    Wydział: W-8 IZ
    Rok studiów: 1

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • najpierw potrzebna Ci metoda compareTo

    public int compareTo(Czasy c) {
    if(czas1-c.czas1 == 0) return (int)czas2 - c.czas2;
    else
    return (int)czas1-c.czas1;
    }

    potem tworzysz iterator

    Iterator it = lista.listIterator();

    a potem korzystając z iteratora i metody compareTo stosujesz dowolny algorytm sortowania
    d41d8cd98f00b204e9800998ecf8427e
  • romson89  
    absolwent
    Wydział: W-8 IZ
    Rok studiów: 5

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • akul napisał/a:
    najpierw potrzebna Ci metoda compareTo

    public int compareTo(Czasy c) {
    if(czas1-c.czas1 == 0) return (int)czas2 - c.czas2;
    else
    return (int)czas1-c.czas1;
    }

    potem tworzysz iterator

    Iterator it = lista.listIterator();

    a potem korzystając z iteratora i metody compareTo stosujesz dowolny algorytm sortowania


    taa. samo to nie wystarczy. W parametrze konstruktora listy trzeba podać ten komparator jeszcze =]
    d41d8cd98f00b204e9800998ecf8427e
  • Zibo
    Outsider
    Wydział: W-8 IZ
    Rok studiów: 3

    zobacz profil
    szybka wiadomość
  • 0
  • cytuj |

  • Tworzysz klasę jakiegoś fajnego komparatora, jak np. :

    Kod:
    public class FajnyComparator implements Comparator
    {
        public int compare(Object left, Object right) throws ClassCastException
        {
            if( ((Comparable) left).compareCzas1( right ) > 0 )
                return 1;
            else if( ((Comparable) left).compareCzas1( right ) < 0 )
                return -1;
            else
            {
                if( ((Comparable) left).compareCzas2( right ) > 0 )
                    return 1;
                else
                    return -1;
            }
        }

    }


    Komparator porównuje wg kolejności najpierw czas1, potem czas2. W klasie/metodzie sortującej tworzysz instancję takiego właśnie komparatora i używasz go do porównywania w sortowaniu.
    d41d8cd98f00b204e9800998ecf8427e

Powered by phpBB modified by Przemo © 2003 phpBB Group. Then, after many years modified again, this time by Piotrek © 2014
Strona wygenerowana w 23,6ms. Zapytań do SQL: 15