A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

class Student implements Comparable {
        private int age;
        private int score;
        private String name;

        Student(int age, int score, String name) {
                this.name = name;
                this.age = age;
                this.score = score;
        }

        public int getAge() {
                return age;
        }

        public int getScore() {
                return score;
        }

        public String getName() {
                return name;
        }

        public String toString() {
                return this.age + "....." + this.score + "======" + this.name;
        }

        public int compareTo(Object o1) {

                Student s1 = (Student) o1;

                if (this.getAge() > s1.getAge())
                        return 1;
                else if (this.getAge() < s1.getAge()) {
                        return -1;
                } else {
                        if (this.getScore() > s1.getScore())
                                return 1;
                        else if (this.getScore() == s1.getScore())
                                return this.getName().compareTo(s1.getName());
                        else if (this.getScore() < s1.getScore())
                                return -1;
                }
                return 0;

        }

}

public class TestMap1 {
        public static void main(String[] args) {
                @SuppressWarnings("unchecked")
                Map<Integer, Student> hm = new TreeMap();
                hm.put(18, new Student(12, 76, "jim"));
                hm.put(25, new Student(16, 79, "jim"));
                hm.put(85, new Student(54, 76, "jim"));
                hm.put(38, new Student(23, 86, "jim"));
                hm.put(4, new Student(12, 56, "jim"));
                hm.put(3, new Student(45, 96, "jim"));
                hm.put(9, new Student(12, 56, "kum"));
                hm.put(56, new Student(12, 76, "kumm"));
                hm.put(45, new Student(12, 779, "jim"));

                Set<Integer> se = hm.keySet();
                Set stu = new TreeSet();
                for (Iterator it = se.iterator(); it.hasNext();) {

                        stu.add(hm.get(it.next()));
                }
                for (Iterator st = stu.iterator(); st.hasNext();) {
                        System.out.println(st.next());
                }

3 个回复

倒序浏览
  Map<Integer, Student> hm = new TreeMap();
使用泛型的话,最好全部都加上  Map<Integer, Student> hm = new TreeMap<Integer, Student>();
还有后面也是 Set<Integer> se = hm.keySet();
                Set<Integer> stu = new TreeSet<Integer>();

回复 使用道具 举报
是java编译器的一个友好提示,在你的代码中加入泛型即可避免
回复 使用道具 举报
“使用了未经检查或不安全的操作。”  在使用容器类时,涉及到泛型的,在编译时,一般都会报这个提示的,当然这只是个 提示提醒,并非编译错误,出了这样的提示你还是可以用java命令正常运行 .class文件的,只要你程序中涉及转型的地方,都正常的进行向上向下转型了,程序还是一切正常的

泛型是 JDK1.5 版本后出现的新特性,用于解决安全问题,是一个类型安全机制
格式:  通过尖括号<>来定义要操作的引用数据类型,通常在集合框架中很常见,其实<>就是用来接收引用数据类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可

好处在于
①ArrayList<String> al = new ArrayList<String>();
将运行时期可能会出现的问题ClassCastException,转移到了编译时期。
方便于程序员解决问题,让运行时期的问题减少,安全

②Iterator<String> it = al.iterator();
while(it.hasNext())
{
String s=it.next();
  //不用强转了
Sop(s+":"+s.length());
}
☆避免了强制转换的麻烦☆

可以定义泛型类,泛型方法,泛型接口,详见 老毕基础视频 第15天,嘿嘿,哥们这就不赘述了,再说就感觉有点罗嗦了,也有点跑题了,我这有自个儿做的笔记
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马