20分 |
下面是基本思路
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ScoreOrder { public static void main(String[] args) { //如果分数作为key,就不能用map了,因为不允许存在同样的key多个value List<Score> list = new ArrayList<Score>(); list.add(new Score(2, "dd")); list.add(new Score(8, "ff")); list.add(new Score(3, "cc")); list.add(new Score(3, "aa")); Score[] scores = list.toArray(new Score[] {}); Arrays.sort(scores); System.out.println(Arrays.asList(scores)); } public static class Score implements Comparable<Score> { private Integer point; private String level; public Score(Integer point,String level){ this.point = point; this.level = level; } @Override public int compareTo(Score o) { if (point > o.point) { return 1; } else if (point < o.point) { return -1; } else { return level.compareTo(o.level); } } public String toString() { return "point:" + point + " & level:" + level; } } } |
map的话可以把key拿出来Collections.sort(new ArrayList(#map#.keySet()))
然后这个list就是排序完的key把头尾那个拿来get下就好了.. 数字的key就是这样~ |
|
//按照分数从高到低和对应的字母的自然顺序
import java.util.Map; import java.util.Iterator; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; public class J_test3 public int Setnum() |
|
方法都多中,可以用map,里面用数字作为key,用list作为value,如果数字相同的,就把对应的字符add到list中,
另外一种就是直接放到list中,自己构建一个类,定义数字和字符两个属性,然后重写compareto方法,就拿数字比较,相同的再比较字符,这样再调用集合的sort方法排序就可以了, 当然还有其他的方法。 |
|
方法很多,把分数和名称作为一个Pojo的属性,可以用Arrays.sort(Object[]),Collections.sort(List<T>),TreeSet
|
|
发个map的
import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class AA { public static void main(String[] args) { //如果分数作为key,就不能用map了,因为不允许存在同样的key多个value Map<Integer,String> map = new HashMap<Integer,String>(); map.put(2, "dd"); map.put(8, "ff"); map.put(3, "cc"); map.put(3, "aa"); Integer[] keys=map.keySet().toArray(new Integer[0]); Arrays.sort(keys); System.out.println(map.get(keys[0])); } } |
|
上面是抄了一楼的代码改的 一楼 别介意哦
|
|
MAP的key值不允许重复啊,这样做有些问题啊。。。 |
|
|