Map的基本用法(Java)
2016-11-18 18:36 甘雨路 阅读(819) 评论(0) 编辑 收藏 举报package home.collection.arr; import java.awt.Window.Type; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Map.Entry; public class HomeworkMap2 { public static void main(String[] args) { // 创建Map Map<Integer,Student> map = new HashMap<Integer,Student>(); createStudets(20, map); // System.out.println(map); List<Integer> scoreList = new ArrayList<Integer>(); getAllScore(scoreList, map,1,null); // 排序 sortByScore(scoreList); // 取前三位 int[] maxScores = new int[3]; for (int i = 0; i < maxScores.length; i++) { if (scoreList.get(i)>0) { maxScores[i]=scoreList.get(i); // System.out.println(maxScores[i]); } } getAllScore(scoreList, map, 2, maxScores); } /** * @param count 创建学生的个数 * @param map 存放学生的Map */ public static void createStudets(int count,Map<Integer,Student> map){ // 创建一部分students for (int i = 0; i < count; i++) { Student stu = new Student("lf"+i, 75+i); // student被添加到map中 map.put(stu.getNumber(), stu); } } /** * * @param scoreList * @param map * @param method * @param maxScores */ public static void getAllScore(List<Integer> scoreList,Map<Integer,Student> map,int method,int[] maxScores) { // 从Map取出score放进newList // 遍历 // 取出Map中的键值对 Set<Entry<Integer, Student>> entry = map.entrySet(); // System.out.println(entry); // 遍历set(就是遍历Map) Iterator<Entry<Integer, Student>> it = entry.iterator(); while (it.hasNext()) { // Entry key-value Entry<Integer, Student> e = it.next(); Student s = e.getValue(); if (method == 1) { scoreList.add(s.getScore()); }else if (method == 2) { // 判断 for (int i = 0; i < maxScores.length; i++) { if (s.getScore() == maxScores[i]) { System.out.println("第"+(i+1)+"名:"+s.getName()+" 分数:"+s.getScore()); } } } } // System.out.println(scoreList); } /** * 排序 */ public static void sortByScore(List<Integer> scoreList){ Collections.sort(scoreList, new Comparator<Integer>() { public int compare(Integer num1,Integer num2) { return num2-num1; } }); } }