List 中的对象如何根据某个字段进行排序?急!
我有一个ArrayList,里面放的是一些对象,我根据对象的某个字段对ArrayList中的对象进行排序,但是不知道怎么做?请知道的帮一下,谢谢!
[解决办法]
List arr = new ArrayList();
arr.add("哈哈");
arr.add("2");
arr.add("1");
arr.add("5");
arr.add("3");
arr.add("4");
Object[] temp = arr.toArray();
Arrays.sort(temp);
arr = (List) Arrays.asList(temp);
System.out.println(arr);
[解决办法]
List list = new ArrayList(); //...... Collections.sort(list, new MyComparator()); class MyComparator implements Comparator { //这里的o1和o2就是list里任意的两个对象,然后按需求把这个方法填完整就行了 public int compare(Object o1, Object o2) { //比较规则 } }
[解决办法]
temp = (Test1) arr.get(j + 1);
arr.set(j + 1, (Test1) arr.get(j));
arr.set(j, temp);
exchange = true;
}
}
if (!exchange)
break;
}
return arr;
}
public static void main(String[] args) {
List arr = new ArrayList();
Test1 test = new Test1("1", "dssags");
arr.add(test);
test = new Test1("3", "dssags");
arr.add(test);
test = new Test1("2", "dssags");
arr.add(test);
test = new Test1("5", "dssags");
arr.add(test);
test = new Test1("4", "dssags");
arr.add(test);
test = new Test1("6", "dssags");
arr.add(test);
Test1 operation = new Test1();
arr = operation.mySort(arr);
for (int i = 0; i < arr.size(); i++) {
System.out.println(((Test1) arr.get(i)).getA());
}
}
}
[解决办法]
根据boolean咋排哦,就两个值
[解决办法]
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;class Test implements Comparator { private int num; public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int compare(Object o1, Object o2) { if (((Test) o1).getNum() > ((Test) o2).getNum()) return 1; return 0; }}class TestExecute { public static void printList(List<Test> list) { for (Test test : list) System.out.print(test.getNum()+" "); } @SuppressWarnings("unchecked") public static void main(String[] args) { List<Test> list = new ArrayList<Test>(); for (int i = 10; i > 0; --i) { Test test = new Test(); test.setNum(i); list.add(test); } System.out.println("排序前:"); printList(list); Collections.sort(list, new Test()); System.out.println("\n排序后:"); printList(list); }}
[解决办法]
Collections.sort(list,new Comparator(){
public int compare(Object o1, Object o2) {
if((o1 instanceof MyClass) && (o2 instanceof MyClass)){
return ((MyClass)o1).isOK > ((MyClass)o2).isOK);
}
}
});
[解决办法]
[解决办法]
1:/** * 比较器 Collections.sort(list, myCompatator); * * @param aone */class MyComparator implements Comparator { public int compare(Object arg0, Object arg1) { YouType cop1 = (YouType) arg0; YouType cop2 = (YouType) arg1; int flag = cop1.getOrderId().compareTo(cop2.getOrderId()); return flag; }}2:MyComparator myCompatator = new MyComparator();Collections.sort(docsU, myCompatator);// 排序
[解决办法]
ArrayList 是有序的 使用范型 ArrayList<Object> list = new ArrayList<Object>();
然后 Object implements Comparator 接口 实现里面的 compareTo 方法
那么 ArrayList在排序时会自动掉用 上面你实现的compareTo方法进行排序的
[解决办法]
List<ShushanRelationInfoPOJO> list = new ArrayList<ShushanRelationInfoPOJO>(); //.............. Collections.sort(list, new Comparator<ShushanRelationInfoPOJO>() { public int compare(ShushanRelationInfoPOJO o1, ShushanRelationInfoPOJO o2) { boolean onLine1 = o1.isOnline(); boolean onLine2 = o2.isOnline(); if(onLine1 ^ onLine2) { return onLine1? -1: 1; } else { return 0; } } });