今天看了一道面试题就是 如何根据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]}
那么到这里 就完成了 有好奇的小伙伴就会问了 ?
你这是升序 那我想要降序排列 怎么办 问得好!!
仔细理解一下转化的流程 那么 也就不是难事了,多思考,多学习,希望每个和我一样积极学习的都能做大佬
虽然我不是大佬 哈哈哈