“匿名内部类”的使用场合举例

package com.sxt.set6;
import java.util.Comparator;
import java.util.HashSet;
/*
 * TreeSet 有序的 二叉树(红黑数)
 */
import java.util.Set;
import java.util.TreeSet;
/*
 * 匿名内部类
 * 使用场合:只需要创建一次对象,就不在使用了,没有必要提供专门的实现类(不使用外部比较器)
 * 
 */
public class TestStudent {
    public static void main(String[] args) {
        
        //匿名内部类:不是新建了接口而是新建了一个实现类   (穿入比较规则)
        
        Set<Student> arr1 = new TreeSet<>(new Comparator<Student>() {

            @Override
            public int compare(Student stu1, Student stu2) {
                if(stu1.getName().equals(stu2.getName())){
                    return stu2.getAge() - stu1.getAge();
                }
                return stu1.getName().compareTo(stu2.getName());
            }
        });
        arr1.add(new Student("bbb", 21, 532.2));
        arr1.add(new Student("ccc", 32, 32.2));
        arr1.add(new Student("aaa", 11, 352.2));
        arr1.add(new Student("aaa", 15, 32.2));
        System.out.println("匿名内部类按名字排序(如果名字相同则按年龄降序排序):");
        for(Student s:arr1){
            System.out.println(s);
        }

        //按照外部比较器按名字排序(如果名字相同则按年龄降序排序):
        //Student [name=aaa, age=15, salary=32.2]
        //Student [name=aaa, age=11, salary=352.2]
        //Student [name=bbb, age=21, salary=532.2]
        //Student [name=ccc, age=32, salary=32.2]

    }
}

 

posted @ 2017-04-21 21:29  清风追梦enjoy  阅读(512)  评论(0编辑  收藏  举报