List 根據屬性去重
阿新 • • 發佈:2018-12-27
/** * list去重複(深) 並根據欄位進行排序 */ public static <T> ArrayList<T> deduplicate(List<T> list, String filedName) { Set<T> set = new TreeSet<>(new Comparator<T>() { @Override public int compare(T o1, T o2) { String object1 = getValueByFiledName(o1,filedName); String object2 = getValueByFiledName(o2,filedName); return object1.compareTo(object2); } }); set.addAll(list); return new ArrayList<>(set); } /** * 根據類的屬性名獲取值 * @param object 目標類 * @param name 目標欄位 * @return 返回該類中該欄位的value */ public static String getValueByFiledName(Object object,String name){ String value = ""; try { Class objectClass = object.getClass(); Field field = objectClass.getDeclaredField(name); field.setAccessible(true); value = String.valueOf(field.get(object)); } catch (Exception exc) { value = ""; } return value; }