求java大神指导小白一下 用collections方法找出map集合最大值

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class Test3 {

	public static void main(String[] args) {
		TreeMap<Integer,User> map=new TreeMap<>();
		User user1=new User(15, "赵六", 14, "男");
		map.put(user1.getNum(),user1);
		User user2=new User(5, "田七", 15, "女");
		map.put(user2.getNum(),user2);
		User user3=new User(3, "王五", 12, "男");
		map.put(user3.getNum(),user3);
		User user4=new User(4, "张三", 16, "女");
		map.put(user4.getNum(),user4);
		User user5=new User(19, "笑笑", 7, "男");
		map.put(user5.getNum(),user5);
		
		
		Set<Integer> keys=map.keySet();
		for(Integer key:keys) {
			 User value=map.get(key);
			System.out.println(key+"\t"+value);
		}
		
		ArrayList<Entry<Integer,User>> list=new ArrayList<Entry<Integer,User>>(map.entrySet());
		Collections.sort(list, new Comparator<Entry<Integer, User>>(){

			@Override
			public int compare(Entry<Integer, User> o1, Entry<Integer, User> o2) {
				
				return o1.getValue().compareTo(o2.getValue());
			}			
		});
		
		for(Entry<Integer,User> mapping:list) {
			System.out.println(mapping.getKey()+":"+mapping.getValue());
		}
	    	
		System.out.println("年龄最大的用户");
		System.out.println(list.get(0).getValue());
		System.out.println("年龄最小的用户");
		System.out.println(list.get(list.size()-1).getValue());
		
       /* Collection<User> values=map.values();
		System.out.println(values);
		User max=Collections.max(values.)*/
		

	}

}

这样感觉不对 虽然能找出来 但感觉不对  感觉最后注释的简单点但是那里max报错 怎么解决 拜托

Map userMap = new LinkedHashMap();
    UserTestInfo user1=new UserTestInfo(15, "赵六", 14, "男");
    userMap.put(user1.getNumber(),user1);
    UserTestInfo user2=new UserTestInfo(5, "田七", 15, "女");
    userMap.put(user2.getNumber(),user2);
    UserTestInfo user3=new UserTestInfo(3, "王五", 12, "男");
    userMap.put(user3.getNumber(),user3);
    UserTestInfo user4=new UserTestInfo(4, "张三", 16, "女");
    userMap.put(user4.getNumber(),user4);
    UserTestInfo user5=new UserTestInfo(19, "笑笑", 7, "男");
    userMap.put(user5.getNumber(),user5);

    List<Integer> keyList = new ArrayList<>(userMap.keySet());
    //1、根据序号升序打印用户信息
    Collections.sort(keyList);//排序key
    System.out.println("开始根据序号升序打印用户信息============");
    for (Integer key:keyList) {
        System.out.println(JSON.toJSONString(userMap.get(key)));
    }
    System.out.println("============结束根据序号升序打印用户信息");

    //2、根据年龄排序key 打印年龄最小与最大者信息
    Collections.sort(keyList, new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return JSON.parseObject(JSON.toJSONString(userMap.get(o1)),UserTestInfo.class).getAge()-
                    JSON.parseObject(JSON.toJSONString(userMap.get(o2)),UserTestInfo.class).getAge();
        }
    });
    System.out.println("年龄最小者信息为:"+JSON.toJSONString(userMap.get(keyList.get(0))));
    System.out.println("年龄最大者信息为"+JSON.toJSONString(userMap.get(keyList.get(keyList.size()-1))));
}





其实这是题目限制了,如果不是题目限制,直接用list装uesr信息,直接重写compare方法排序也好取最大值也好 都能满足需要