1.创建学生类
package Java0910;
import java.util.Objects;
public class Student {
String name;
int age;
String phone;
public Student(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name) && Objects.equals(phone, student.phone);
}
@Override
public int hashCode() {
return Objects.hash(name, age, phone);
}
}
package Java0910;
import java.util.ArrayList;
import java.util.List;
public class List02 {
public static void main(String[] args) {
Student s = new Student("晓晓", 20, "15373412345");
Student s1 = new Student("小小", 21, "132479069");
List l = new ArrayList();
l.add(s);
l.add(s1);
for (Object e : l) {
System.out.println(e);
}
}
}
运行结果:
Student{name='晓晓', age=20, phone='15373412345'}
Student{name='小小', age=21, phone='132479069'}
2.用Map封装学生信息
package Java0910;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class List02 {
public static void main(String[] args) {
Map m = new HashMap();
m.put("name", "晓晓");
m.put("age", 20);
m.put("phone", "123");
Map m1 = new HashMap();
m1.put("name", "小小");
m1.put("age", 21);
m1.put("phone", "12");
List l = new ArrayList();
l.add(m);
l.add(m1);
for (Object e : l) {
System.out.println(e);
}
}
}
运行结果:
{phone=123, name=晓晓, age=20}
{phone=12, name=小小, age=21}
3.用TreeSet比较学生的年龄大小。
package Java0910;
import java.util.Objects;
public class Student implements Comparable<Student> {{
String name;
int age;
String phone;
public Student(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name) && Objects.equals(phone, student.phone);
}
@Override
public int hashCode() {
return Objects.hash(name, age, phone);
}
public int compareTo(Student o) {
//return this.age-o.age; //从小到大
return o.age - this.age; //从大到小
}
}
package Java0910;
import java.util.*;
public class List02 {
public static void main(String[] args) {
Student s = new Student("晓晓", 20, "15373412345");
Student s1 = new Student("小小", 21, "132479069");
Set l = new TreeSet();
l.add(s);
l.add(s1);
for (Object e : l) {
System.out.println(e);
}
}
}
运行结果:
Student01{name='小小', age=21, phone='132479069'}
Student01{name='晓晓', age=20, phone='15373412345'}
4.创建一个比较器,实现Comparator接口
package JavaCollection;
import java.util.Comparator;
public class MyComparator implements Comparator<Student02> {
@Override
public int compare(Student02 o1, Student02 o2) {
//return o1.age - o2.age; //从小到大
return o2.age - o1.age; //从大到小
}
}
package JavaCollection;
import java.util.Objects;
public class Student02 {
String name;
int age;
String phone;
public Student02(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student02 student = (Student02) o;
return age == student.age && Objects.equals(name, student.name) && Objects.equals(phone, student.phone);
}
@Override
public int hashCode() {
return Objects.hash(name, age, phone);
}
}
package JavaCollection;
import java.util.Comparator;
import java.util.TreeSet;
public class Test03 {
public static void main(String[] args) {
Comparator c = new MyComparator();
TreeSet t = new TreeSet(c);
Student02 s = new Student02("晓晓", 20, "15373412345");
Student02 s1 = new Student02("小小", 21, "132479069");
t.add(s);
t.add(s1);
for (Object e : t) {
System.out.println(e);
}
}
}
5.匿名实现类
package Java0910;
import java.util.Comparator;
import java.util.TreeSet;
public class TreeSet01 {
public static void main(String[] args) {
//匿名内部类(接口的实现类)
TreeSet t = new TreeSet(new Comparator<Student01>() {
@Override
public int compare(Student01 o1, Student01 o2) {
return o1.age - o2.age;
}
});
Student01 s = new Student01("晓晓", 22, "15373412345");
Student01 s1 = new Student01("小小", 21, "132479069");
t.add(s);
t.add(s1);
for (Object e : t) {
System.out.println(e);
}
}
}
运行结果:
Student01{name='小小', age=21, phone='132479069'}
Student01{name='晓晓', age=22, phone='15373412345'}
6.lambad表达式
import java.util.TreeSet;
public class TreeSet01 {
public static void main(String[] args) {
//lambad表达式
TreeSet<Student01> t = new TreeSet<>((o1,o2) -> o1.age - o2.age);
Student01 s = new Student01("晓晓", 20, "15373412345");
Student01 s1 = new Student01("小小", 21, "132479069");
t.add(s);
t.add(s1);
for (Object e : t) {
System.out.println(e);
}
}
}
运行结果:
Student01{name='小小', age=21, phone='132479069'}
Student01{name='晓晓', age=22, phone='15373412345'}