public class Sort{
public static int getAge() {
return (int) (Math.random() * 80);
}
public static String brithday() {
Random r = new Random();
int random = r.nextInt();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
return simpleDateFormat.format(new Date(System.currentTimeMillis() + random * 1000 * 1000));
}
public static void main(String[] args) {
String[] name = {"小明", "韩梅梅", "李雷", "小花", "大狗", "紫霞", "小青", "聂小七"};
List list = new ArrayList();
Map map;
for (int i = 0; i < name.length; i++) {
map = new HashMap();
map.put("name", name[i]);
map.put("age", getAge());
map.put("brithday", brithday());
list.add(map);
}
System.out.println("============排序前============");
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
}
//按年龄排序
Collections.sort(list, new Comparator<Map<Object, Object>>() {
@Override
public int compare(Map<Object, Object> o1, Map<Object, Object> o2) {
return (Integer) o1.get("age") - (Integer) o2.get("age");
}
});
System.out.println("============按年龄排序后============");
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
}
//按Brithday排序
Collections.sort(list, new Comparator<Map<Object, Object>>() {
@Override
public int compare(Map<Object, Object> o1, Map<Object, Object> o2) {
return ((String) o1.get("brithday")).compareTo((String) o2.get("brithday"));
}
});
System.out.println("============按Brithday排序后============");
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
}
}
}
输出:
============排序前============
{brithday=2019-06-09, name=小明, age=55}
{brithday=2019-06-15, name=韩梅梅, age=73}
{brithday=2019-06-18, name=李雷, age=46}
{brithday=2019-07-03, name=小花, age=59}
{brithday=2019-06-30, name=大狗, age=12}
{brithday=2019-06-05, name=紫霞, age=31}
{brithday=2019-07-11, name=小青, age=48}
{brithday=2019-06-29, name=聂小七, age=62}
============按年龄排序后============
{brithday=2019-06-30, name=大狗, age=12}
{brithday=2019-06-05, name=紫霞, age=31}
{brithday=2019-06-18, name=李雷, age=46}
{brithday=2019-07-11, name=小青, age=48}
{brithday=2019-06-09, name=小明, age=55}
{brithday=2019-07-03, name=小花, age=59}
{brithday=2019-06-29, name=聂小七, age=62}
{brithday=2019-06-15, name=韩梅梅, age=73}
============按Brithday排序后============
{brithday=2019-06-05, name=紫霞, age=31}
{brithday=2019-06-09, name=小明, age=55}
{brithday=2019-06-15, name=韩梅梅, age=73}
{brithday=2019-06-18, name=李雷, age=46}
{brithday=2019-06-29, name=聂小七, age=62}
{brithday=2019-06-30, name=大狗, age=12}
{brithday=2019-07-03, name=小花, age=59}
{brithday=2019-07-11, name=小青, age=48}