怎麼對list裡面的資料的某一個欄位進行排序
阿新 • • 發佈:2019-02-12
集合類List存放的資料,預設是按照放入順序排序的。我們也可以對list中某一個元素進行排序。例如:
package test.tool.gui.dbtool.util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List list = new ArrayList(); //建立3個學生物件,年齡分別是20、19、21,並將他們依次放入List中 Student s1 = new Student(); s1.setAge(20); Student s2 = new Student(); s2.setAge(19); Student s3 = new Student(); s3.setAge(21); list.add(s1); list.add(s2); list.add(s3); System.out.println("排序前:"+list); Collections.sort(list, new Comparator(){ public int compare(Student o1, Student o2) { //按照學生的年齡進行升序排列 if(o1.getAge() > o2.getAge()){ return 1; } if(o1.getAge() == o2.getAge()){ return 0; } return -1; } }); System.out.println("排序後:"+list); } }
class Student{
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return getAge()+"";
}
}
或者:寫一個對list進行特定欄位排序的方法
public List<VisitDataDomain> staytimeSort(List<VisitDataDomain> list){ VisitDataDomain temp = null; boolean exchange = false; for (int i = 0; i < list.size(); i++) { exchange = false; for (int j = list.size() - 2; j >= i; j--) { if (((VisitDataDomain) list.get(j + 1)).getStaytime()< ((VisitDataDomain) list.get(j)).getStaytime()) { temp = (VisitDataDomain) list.get(j + 1); list.set(j + 1, (VisitDataDomain) list.get(j)); list.set(j, temp); exchange = true; } } if (!exchange) break; } return list; } Collections.sort(pvlist,new Comparator<VisitDataDomain>() { @Override public int compare(VisitDataDomain o1, VisitDataDomain o2) { if(o1.getPv()>o2.getPv()){ return 1; } if(o1.getPv()>o2.getPv()){ return 0; } return -1; } });