Arraylist sortowanie

0

mam taki problem:

mam w arrayliscie pole z takimi danymi

np.
4322-0-200
2122-0-199
3233-1-199
4333-1-200

i jaki myk zrobic zeby to sortowalo "od konca"

czyli powiedzmy ze dane są postaci cc/dd/ee
i chce zeby najpierw sortowało wg ee potem dd potem cc

czyli chce by wygladalo to tak

2122-0-199
3233-1-199
4322--0-200
4333-1-200

czytalem cos o comparatorze ale nie wiem jak to zastosowac. jakies wskazówki?

0

Jedna sugestia, skorzystaj z szukajki na forum, szukaj słowa Comparator.

0

no tak tylko za bardzo nie wiem jak zabrac sie do tych danych jak sa w takiej postaci 333/0/200

na razie probowalem je podzielic tak

Scanner c=new Scanner(karta1);
c.useDelimiter("/");

tylko nie wiem czy to ma sens

0

Poniższa klasa dobrze sortuje, jeżeli:

  • każdy kawałek ma postać liczby typu int
  • wszystkie ciągi mają tyle samo kawałków
class K implements Comparator
{
    /*public boolean equals(String s1,String s2)
    {
        return true;
    }*/
    public int compare(Object o1,Object o2)
    {
        String s1=(String) o1;
        String s2=(String) o2;
        String[] skl1=s1.split("/");
        String[] skl2=s2.split("/");
        int[] i1=new int[skl1.length];
        for(int i=0;i<skl1.length;i++)
            i1[i]=Integer.parseInt(skl1[i]);
        int[] i2=new int[skl2.length];
        for(int i=0;i<skl2.length;i++)
            i2[i]=Integer.parseInt(skl2[i]);
        for(int i=0;i<Math.min(i1.length,i2.length);i++)
        {
            if(i1[i]>i2[i])
               return 1;
            if(i1[i]<i2[i])
               return -1;
        }
        return 0;
    }
}

przykład użycia

        String[] tab={"102/2/35","99/4/23","99/4/21"};
        K komp=new K();
        Arrays.sort(tab,komp);
        for(int i=0;i<tab.length;i++)
           System.out.println(tab[i]);
0

nie dokońca o to mi chodzi bo w Twoim przypadku kod 104/2/21 będzie za 102/2/22 a mi chodzi żeby najpierw były te ostatnie najmniejsze

0

ok przerobiłem to Twoje i działa
dzięki wielkie za pomoc

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