Set 一(TreeSet与HashSet)十四

xiaoxiao2021-02-28  76

import java.util.Comparator; import java.util.TreeSet; /**  *      set  *   /       \  * HashSet  TreeSet   * 1.HashSet 存储元素必须重写hashCode()与equals()方法,我们似乎没关心过;元素不重复  * HashSet底层实现是HashMap,HashMap的底层实现是:数组+链表,其存储元素分  *  2步:  *  1)判断hashCode()  如果相等  2)再判断equals()  * 2.TreeSet 存储元素可以排序,返回0去重  *  1)排序元素类必须实现java.util.lang.Comparable,重写comparaTo()方法。  *    提供空构造  new TreeSet()  *  2)提供另外的排序业务类,实现java.util.lang.Comparator,重写compare  *    new TreeSet(Comparator<? super E> comparator)  */ public class TreeSetTest { public static void main(String[] args) { Student st1=new Student("张三",66.5); Student st2=new Student("李四",66.5); Student st3=new Student("王五",80); Student st4=new Student("张三",99); TreeSet<Student> set=new TreeSet<Student>(new Comparator<Student>(){ @Override public int compare(Student o1, Student o2) { return o1.getScore()>o2.getScore()?1:(o1.getScore()==o2.getScore()?0:-1); }}); //在添加元素的同时就排序,提供外部业务排序类(匿名类) set.add(st1); set.add(st2); set.add(st3); set.add(st4); System.out.println(set); //元素本身实现java.util.lang.Comparable 的comparaTo Person p1=new Person("张三",18); Person p2=new Person("李四",59); Person p3=new Person("王五",28); TreeSet<Person> set1=new TreeSet<Person>(); set1.add(p1); set1.add(p2); set1.add(p3); System.out.println(set1); } } //================================================== class Student{ private String name; private double score; public Student() { } public Student(String name, double score) { super(); this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } @Override public String toString() { return "Student姓名:"+this.name+",学分:"+this.score; } } //============================================================ class Person implements Comparable<Person>{ private String name; private int age; public Person() { } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person:姓名:"+this.age+",年龄:"+this.age; } @Override public int compareTo(Person o) { return this.age-o.age; } }
转载请注明原文地址: https://www.6miu.com/read-69766.html

最新回复(0)