如何对Map集合里的对象进行排序

今天看了一道面试题就是 如何根据Map集合里的User对象的age进行升序或降序进行排列

这里记录一下

大家都知道Map集合是键值对形式存储数据的,本身就没有顺序,那么如何排序呢?(圈重点)这里要考

下面 给出一个案例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Test3 {
	public static void main(String[] args) {
		Map map = new HashMap();
		map.put(1, new User("Tom", 12));
		map.put(2, new User("Jerry", 15));
		map.put(3, new User("jack", 21));
		map.put(4, new User("Bob", 10));
		map.put(5, new User("Locy", 18));

		println(map);//重点来了

	}
        
	public static Map println(Map map) {
		System.out.println("map---"+map);
		Set< Entry> entrySet = map.entrySet();
		
		List> list = new ArrayList>(entrySet);
		System.out.println("list---"+list);
		
		Collections.sort(list, new Comparator>() {

			@Override
			public int compare(Entry o1, Entry o2) {
				return o1.getValue().getAge()-o2.getValue().getAge();
			}
		});
		
		LinkedHashMap link = new LinkedHashMap();

		System.out.println("-----------------------------");
		for (Entry entry : list) {
			link.put(entry.getKey(), entry.getValue());
		}
		System.out.println(link);
		return link;
	}
}

我们可以看一下 我们的控制台打印的东东

这里我进行了格式的改动------很明显 我们想要的顺序已经出来了

控制台输出结果是啥呢 
map---{1=User [name=Tom, age=12],
       2=User [name=Jerry, age=15],
       3=User [name=jack, age=21],
       4=User [name=Bob, age=10], 
       5=User [name=Locy, age=18]}

---------转化之后的形式
list---[1=User [name=Tom, age=12],
        2=User [name=Jerry, age=15], 
        3=User [name=jack, age=21], 
        4=User [name=Bob, age=10], 
        5=User [name=Locy, age=18]]

-----------------------------最终结果
{4=User [name=Bob, age=10], 
 1=User [name=Tom, age=12], 
 2=User [name=Jerry, age=15],
 5=User [name=Locy, age=18],
 3=User [name=jack, age=21]}

那么到这里 就完成了 有好奇的小伙伴就会问了 ?

你这是升序  那我想要降序排列 怎么办   问得好!!

仔细理解一下转化的流程 那么 也就不是难事了,多思考,多学习,希望每个和我一样积极学习的都能做大佬

虽然我不是大佬  哈哈哈

 

 

你可能感兴趣的:(java集合)