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

2019-03-31  本文已影响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 + "]";

}

}

}

上一篇下一篇

猜你喜欢

热点阅读