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方法排序也好取最大值也好 都能满足需要