清华复试-成绩排序

题目描述

查找和排序java

题目:输入任意(用户,成绩)序列,能够得到成绩从高到低或从低到高的排列,相同成绩
      都按先录入排列在前的规则处理。ide

   例示:
   jack      70
   peter     96
   Tom       70
   smith     67ui

   从高到低  成绩            
   peter     96    
   jack      70    
   Tom       70    
   smith     67    blog

   从低到高排序

   smith     67  get

   Tom       70    
   jack      70    
   peter     96      it

 

解题思路一:io

Treemapclass

package com.tonyluis.oj;

import java.util.*;
import java.util.Map.*;

public class Main {

	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner in = new Scanner(System.in);
		TreeMap<Integer, List<String>> treeMap = new TreeMap<Integer, List<String>>();
		while (in.hasNext()) {
			int num = in.nextInt();
			int state = in.nextInt();
			for (int i = 0; i < num; i++) {
				String name = in.next();
				int score = in.nextInt();
				if (treeMap.containsKey(score))
					treeMap.get(score).add(name);
				else {
					List<String> list = new ArrayList<String>();
					list.add(name);
					treeMap.put(score, list);
				}
			}
			List<Entry<Integer, List<String>>> list = new ArrayList<Entry<Integer, List<String>>>(treeMap.entrySet());
			if (state == 0)
				Collections.reverse(list);
			for (Entry<Integer, List<String>> entry : list)
				for (String s : entry.getValue())
					System.out.println(s + " " + entry.getKey());
			treeMap.clear();
		}
	}
}

 思路二:import

LinkedHashMap+Comparator

import java.util.*;
import java.util.Map.*;
public class Main {

	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner in = new Scanner(System.in);
		LinkedHashMap<Integer, List<String>> hm = new LinkedHashMap<Integer, List<String>>();
		while (in.hasNext()) {
			int num = in.nextInt();
			int state = in.nextInt();
			for (int i = 0; i < num; i++) {
				String name = in.next();
				int score = in.nextInt();
				if (hm.containsKey(score))
					hm.get(score).add(name);
				else {
					List<String> list = new ArrayList<String>();
					list.add(name);
					hm.put(score, list);
				}
			}
			List<Entry<Integer, List<String>>> list = new ArrayList<Entry<Integer, List<String>>>(hm.entrySet());

			Comparator<Entry<Integer, List<String>>> c1 = new Comparator<Entry<Integer, List<String>>>() {
				@Override
				public int compare(Entry<Integer, List<String>> arg0, Entry<Integer, List<String>> arg1) {
					// TODO Auto-generated method stub
					return arg0.getKey() - arg1.getKey();
				}
			};
			Comparator<Entry<Integer, List<String>>> c2 = new Comparator<Entry<Integer, List<String>>>() {
				@Override
				public int compare(Entry<Integer, List<String>> arg0, Entry<Integer, List<String>> arg1) {
					// TODO Auto-generated method stub
					return arg1.getKey() - arg0.getKey();
				}
			};
			if (state == 1)
				Collections.sort(list, c1);
			else
				Collections.sort(list, c2);
			for (Entry<Integer, List<String>> entry : list)
				for (String s : entry.getValue())
					System.out.println(s + " " + entry.getKey());
            hm.clear();
		}
	}
}
相关文章
相关标签/搜索