Set 一(TreeSet与HashSet)十四
来源:互联网 发布:mac 虚拟光驱软件 编辑:程序博客网 时间:2024/05/20 21:18
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;
}
}
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;
}
}
阅读全文
0 0
- Set 一(TreeSet与HashSet)十四
- Set 二(TreeSet与HashSet)十五
- 黑马程序员_集合之Set(HashSet与TreeSet)
- Set集合接口 HashSet与TreeSet理解
- Set HashSet TreeSet
- Set--HashSet, LinkedHashSet, TreeSet
- Set(HashSet、TreeSet)、泛型
- set list treeset hashset
- Set集合HashSet,TreeSet
- Set-TreeSet-HashSet-LinkedHashSet
- Set(HashSet TreeSet)
- Java集合框架(Set与Map,HashSet与HashMap,TreeSet与TreeMap)
- Set接口(Set接口简介、HashSet集合、TreeSet集合 )
- [J2SE]s02e10.Set的实现类HashSet与TreeSet(课后练习)
- Set集合:HashSet、TreeSet、泛型
- 【insigma】集合Set (HashSet、TreeSet)
- set的hashset和treeSet
- Java--集合(Set:HashSet,TreeSet)
- TCO之旅
- Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别
- jqgrid treegrid 重新加载数据
- C++ 多线程 学习笔记(二)
- url管理器
- Set 一(TreeSet与HashSet)十四
- 深度学习笔记——深度学习框架TensorFlow之Model(十三)
- HttpURLConnection上传大文件内存溢出问题
- 数字证书及CA的扫盲介绍
- HTML学习笔记<5>[CSS]
- 面试编程题:单例模式singleton
- golang下载支付宝对账单
- 凸包入门
- MAC终端ssh连接服务器,空闲时间自动断开连接