在深圳的面试
传入一个List<User> 对象 根据User的Date 类型 birthday属性降序排序
方法1(常见的冒泡法):
private static Map getUsersMap2(List<User> list) { Map map = new HashMap(); List<User> result = new ArrayList<User>(); for (int i = 0; i < list.size(); i++) { User user = list.get(i); for (int j = 0; j < list.size(); j++) { if (user.getBirthday().getTime() > list.get(j).getBirthday().getTime()) { user = list.get(j); } } result.add(user); list.remove(user); } result.add(list.get(0)); map.put("classId", result); return map; }
方法2(利用Collections.sort()方法自定义比较规则):
private static Map getUsersMap(List<User> list) { Map map = new HashMap(); // List<User> result = new ArrayList<User>(); Comparator<User> com = new Comparator<User>() { public int compare(User o1, User o2) { return o1.getBirthday().compareTo(o2.getBirthday());//可以将日期类型直接转换成字符串直接比较ASCII码
//当int < 0 则 o1 < o2;
// int = 0 o1 = o2;
// int > 0 o1 > o2;
} }; Collections.sort(list, com); System.out.println(list); map.put("v", list); return map; }
另附(格式化日期函数的使用):
public static void main(String[] args) throws ParseException { /* DateFormat df = DateFormat.getDateInstance(DateFormat.LONG, Locale.JAPANESE); 不知道是哪一种格式时可以这么做 System.out.println(df.format(new Date())); Date date1 = df.parse("2014/09/16"); Date date2 = df.parse("2014/09/15"); Date date3 = df.parse("2014/09/14");*/
User user1 = new User(1, "zhangsan", "2014/09/16"); User user2 = new User(2, "lisi", "2014/09/17"); User user3 = new User(2, "lisi", "2014/09/14"); List<User> list = new ArrayList<User>(); list.add(user1); list.add(user2); list.add(user3); System.out.println(getUsersMap(list)); }