我有一個數組列表,現在我想對它進行排序,我的ArrayList中包含重複的元素太多,重複的元素也應在最終的結局除去排序列表,請指教關於列表的排序不反覆
ArrayList list=new ArrayList();
list.add("Ram");
list.add("Dinesh");
list.add("Sachin");
list.add("Dinesh");
我有一個數組列表,現在我想對它進行排序,我的ArrayList中包含重複的元素太多,重複的元素也應在最終的結局除去排序列表,請指教關於列表的排序不反覆
ArrayList list=new ArrayList();
list.add("Ram");
list.add("Dinesh");
list.add("Sachin");
list.add("Dinesh");
同上。如果您正在對您創建的對象的集合進行排序,則需要讓Collections和Arrays知道如何比較對象。
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;
}
}
Collections.sort() – 2012-04-28 04:48:56
@Balaswamyvaddeman,我已經編輯我的問題,謝謝 – dghtr 2012-04-28 04:50:39
這聽起來像一個家庭作業的問題,如果是,請編輯的問題有「功課」的標籤。 – David 2012-04-28 04:52:17