java&android 中list集合排序工具類
阿新 • • 發佈:2018-12-17
user實體
public class User { private int id; private String name; private String age; public User(int id, String name, String age) { this.id = id; this.name = name; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
工具類編寫
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collections; import java.util.Comparator; import java.util.List; class Util<T> { //陣列排序的方法 //傳入list 傳入排序欄位 傳入是否升序 public List<T> sort(List<T> list, final String sortField, final Boolean Ascending){ Collections.sort(list, new Comparator<T>() {//排序 @Override public int compare(T o1, T o2) { int retVal=0; //首字母轉大寫 String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w",""); String methodStr="get"+newStr; try { Method method1 = ((T) o1).getClass().getMethod(methodStr, null); Method method2 = ((T) o2).getClass().getMethod(methodStr, null); retVal = method2.invoke(((T) o2), null).toString().compareTo(method1.invoke(((T) o1), null).toString()); // 倒序 } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } if (Ascending) { return 0-retVal; } else { return retVal; } } }); return list; } }
測試類
import java.util.ArrayList; import java.util.List; public class bb { public static void main(String[] args) { // TODO Auto-generated method stub //System.out.print("123"); List<User> userlist=new ArrayList<>(); User user=new User(1, "張1", "15"); userlist.add(user); user=new User(5, "張5", "15"); userlist.add(user); user=new User(2, "張2", "15"); userlist.add(user); user=new User(4, "張4", "15"); userlist.add(user); System.out.println("排序前"); for(int i=0;i<userlist.size();i++) { System.out.println(userlist.get(i).getName()); } System.out.println("升序排序"); Util util=new Util<User>(); util.sort(userlist, "id", true); for(int i=0;i<userlist.size();i++) { System.out.println(userlist.get(i).getName()); } System.out.println("倒序排序"); util.sort(userlist, "id", false); for(int i=0;i<userlist.size();i++) { System.out.println(userlist.get(i).getName()); } } }