TreeSet底层是二叉树,可以对对象元素进行排序,但是自定义类需要实现comparable接口,重写comparaTo() 方法。
TreeSet插入的同时就立刻进行排序,只需要设定好比较器,就能按照设定来进行排序,因为他是一个红黑树,树的特征就是拥有排序。同时他是个set,只要比较器认为是同一个,就会被去重。
TreeSet内部是是用了TreeMap,Set值保存在Map的key中,value存了一个Object,Map中如果Key值相同会被认为是同一个,这样就能够实现数据去重。TreeMap内部维护的是一个红黑树。因为是树状结果,那么其查询效率和插入效率都是log(n),当然对应耗时会因为红黑树平衡调整,会有相应的耗时。
management封装
import java.util.Calendar;
public class Management implements Comparable<Management>{
String userId;
String bookId;
Calendar borrowTime;
Calendar returnTime;
public Management() {
super();
this.borrowTime = null;
this.returnTime = null;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public Calendar getBorrowTime() {
return borrowTime;
}
public void setBorrowTime(Calendar borrowTime) {
this.borrowTime = borrowTime;
}
public Calendar getReturnTime() {
return returnTime;
}
public void setReturnTime(Calendar returnTime) {
this.returnTime = returnTime;
}
@Override
public int compareTo(Management o) {
int num = (this.getUserId().length()-o.getUserId().length())>0?1:-1;
return num;
}
}
book封装
public class Book implements Comparable<Book>{
String bookId;
String bookName;
String bookAdress;
int time;
public Book() {
super();
time = 0;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
@Override
public int compareTo(Book o) {
int num = this.getTime()>o.getTime()?1:-1;
return num;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAdress() {
return bookAdress;
}
public void setBookAdress(String bookAdress) {
this.bookAdress = bookAdress;
}
@O