代码改变世界

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;
            }
        });
    }
}