美文网首页
拓展——javaAPI(集合,比较器的组合应用)

拓展——javaAPI(集合,比较器的组合应用)

作者: 掌灬纹 | 来源:发表于2019-03-31 16:55 被阅读0次

    Java和c++是两门算法竞赛中非常受欢迎的语言,其中Java就以其强大的类库夺名,无论是工程项目还是打算法竞赛,JavaAPI的应用是不可或缺的,像栈,队列等数据结构,Java类库中都做了较为完善的封装,在竞赛中通常会使用一些数据结构,其中排序的工作也是频繁使用,下面就介绍怎样利用比较器让JavaAPI帮你做到你想实现的排序规则。

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.Iterator;

    import java.util.LinkedList;

    import java.util.List;

    public class ListDemo {

    public static void main(String[] args) {

    List<String> list = new ArrayList<String>();

    list = new LinkedList<>();

    list.add("b");

    list.add("m");

    list.add("a");

    Collections.sort(list);

    System.out.println(list);

    List<Student> list1 = new ArrayList<Student>();

    list1.add(new Student(10, "Li"));

    list1.add(new Student(30, "xai"));

    list1.add(new Student(20, "tao"));

    Collections.sort(list1, new Comparator<Student>() {

    // 构建比较器,自定义比较规则,只当前排序有效,如下按年龄排序

    // Comparator名词,比较,还可以在原Student类中实现

    // Comparable接口,形容词比较,针对以后所有排序有效

    @Override

    public int compare(Student o1, Student o2) {

    return o1.getAge() - o2.getAge();

    }

    });

    System.out.println(list1);

    Collections.sort(list1, (o1, o2) -> {// java8特性Lamada表达式

    return o1.name.compareTo(o2.name);

    });

    System.out.println(list1);

    // 迭代器的使用

    Iterator<Student> itr = list1.iterator();

    while (itr.hasNext()) {

    System.out.println(itr.next());

    }

    }

    private static class Student {//自定义类,没有实现Comparable接口

    private int age;

    private String name;

    public Student(int age, String name) {

    super();

    this.age = age;

    this.name = name;

    }

    public int getAge() {

    return age;

    }

    @Override

    public String toString() {

    return "Student [age=" + age + ", name=" + name + "]";

    }

    }

    }

    相关文章

      网友评论

          本文标题:拓展——javaAPI(集合,比较器的组合应用)

          本文链接:https://www.haomeiwen.com/subject/vvrubqtx.html