-2

私は配列リストを持っています、今それをソートしたいです、私の配列リストには重複した要素も含まれています、重複した要素も最終結果のソートされたリストで削除する必要があります、アドバイスしてください

 ArrayList list=new ArrayList();
      list.add("Ram");
       list.add("Dinesh");
      list.add("Sachin");
      list.add("Dinesh");
4

2 に答える 2

0

上も同様。作成したオブジェクトのコレクションをソートする場合は、オブジェクトを比較する方法をコレクションと配列に知らせる必要があります。

import java.util.Arrays;

public class delme {
    public static void main(String[] args)
    {

        SomeData[] theData = new SomeData[5];
        theData[0] = new SomeData("zzzz", 1);
        theData[1] = new SomeData("aaaa", 1);
        theData[2] = new SomeData("zzzz", 0);
        theData[3] = new SomeData("aaaa", 0);
        theData[4] = new SomeData("aaaa", 0);

        Arrays.sort(theData);

        for (int i = 0; i < theData.length; i++){
            System.out.println("theData[" + i + "]=" + theData[i].toString());
        }
    }
  }


  public class SomeData implements Comparable {

    public String someData1;
    public int someData2;


    public SomeData(String s, int i) {
        someData1 = s;
        someData2 = i;
    }


    //return -1 if this object should come before the arguments object in a sorted list
    //return 0 if they have the same value
    //return 1 if this object should come after in a sorted list
    public int compareTo(Object arg0) throws ClassCastException {
        if (!(arg0 instanceof SomeData)) //we must accept type Object so lets check to make sure its of type SomeData
            throw new ClassCastException("peram given is not a SomeData object");

        SomeData otherData = (SomeData)arg0; //lets cast it to our data type for ez access
        if (someData2 == otherData.someData2)
            return someData1.compareTo(otherData.someData1);
        return Integer.compare(someData2, otherData.someData2);
    }

    public String toString() {
        return "someData1=" + someData1 + ", someData2=" + someData2;
    }
  }
于 2012-04-28T05:42:37.963 に答える