# [çåä¸ç个人空é´](https://scm-git.github.io/)
### TreeSetæåºæ»ç»
TreeSetæåºå¸¸ç¨çä¸¤ç§æ¹å¼ï¼
1. éè¿`TreeSet(Comparator super E> comparator)`æé æ¹æ³æå®TreeSetçæ¯è¾å¨è¿è¡æåº
2. 使ç¨TreeSet()æé æ¹æ³ï¼å¹¶å¯¹éè¦æ·»å å°setéåä¸çå
ç´ å®ç°Comparableæ¥å£è¿è¡æåº
---
ä¸é¢éè¿ç¤ºä¾ä»£ç 详ç»ä»ç»è¿ä¸¤ç§æ¹æ³ï¼
### 1. éè¿TreeSet(Comparator super E> comparator) æé æ¹æ³æå®TreeSetçæ¯è¾å¨è¿è¡æåº
* (1). æé è£
å
¥TreeSetçJava bean
```java
package src
public class Foo {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String toString() {
return "foo:" + this.getNum() + ",";
}
}
```
* (2). èªå·±å®ç°æ¯è¾å¨
```java
package src
import java.util.Comparator;
public class MyComparator implements Comparator {
public int compare(Foo f1, Foo f2) {
if (f1.getNum() > f2.getNum()) {
return 1;
} else if (f1.getNum() == f2.getNum()) {
return 0;
} else {
return -1;
}
}
}
```
* (3). new TreeSetæ¶æå®æ¯è¾å¨
```java
TreeSet set = new TreeSet(new MyComparator());
```
è¿æ ·å¨set.add()å
ç´ æ¶å°±ä¼æ ¹æ®èªå·±å®ä¹æ¯è¾å¨è¿è¡æåºäº
#### 2. 使ç¨TreeSet()æé æ¹æ³ï¼å¹¶å¯¹éè¦æ·»å å°setéåä¸çå
ç´ å®ç°Comparableæ¥å£è¿è¡æåº
è¿ç§æ¹æ³ä¸éè¦èªå·±åä¸ä¸ªæ¯è¾å¨ï¼éè¦å¯¹è£
å
¥setéåä¸çå
ç´ å®ç°Comparableæ¥å£ï¼TreeSetéåå°±æ ¹æ®beançèªç¶é¡ºåºè¿è¡æåº
* (1). æé beanï¼éè¦å®ç°Comparableæ¥å£ï¼å¹¶éåcompareTo()æ¹æ³ï¼compareToæ¹æ³ä¸å®ä¹æåºçæ¹å¼
```java
public class Foo implements Comparable {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String toString() {
return "foo:" + this.getNum() + ",";
}
public int compareTo(Object obj) {
if (obj instanceof Foo) {
Foo foo = (Foo) obj;
if (this.num > foo.getNum()) {
return 1;
} else if (this.num == foo.getNum()) {
return 0;
} else {
return -1;
}
}
return 0;
}
}
```
* (2). å建TreeSetæ¶ç´æ¥ä½¿ç¨æé TreeSet()æ¹æ³
```java
TreeSet set = new TreeSet();
```
ä¸éè¦æå®æ¯è¾å¨ï¼è¿æ ·å¨æ§è¡set.add()æ¹æ³æ¶ï¼setéåå°±èªå¨æ ¹æ®beanä¸compareTo()æ¹æ³æå®çæ¹å¼è¿è¡æåºã
ä¸¤ç§æ¹æ³ä»»éå
¶ä¸é½è½è¾¾å°ç®ç