- java集合框架TreeSet的使用
-使用說明
-實現接口
TreeSet是集合Collection的子類接口Set的實現類,是無序不重複的,但是其輸出的結果是有序的,可以實現兩種排序方式: 1.自然排序 2.自定義排序
TreeSet set = new TreeSet();
set.add("2");
set.add("1");
set.add("4");
set.add("8");
set.add("6");
set.add("3");
System.out.println(set);
結果:{1,2,3,4,6,8}
Com com = new Com();
TreeSet set = new TreeSet(com);
class Com implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Clea number = (Clea)o1;
Clea number1 = (Clea)o2;
if (number1.age == number.age) {
return 0;
}
if (number1.age > number.age) {
return 1;
}
if (number1.age < number.age) {
return -1;
}
return 0;
}
@Override
public String toString() {
return super.toString() ;
}
}
class Clea{
int age;
public Clea(int age){
this.age = age;
}
@Override
public String toString() {
return "[" + age + "]";
}
}
- java集合框架HashSet的使用
-使用說明:
重複元素的判斷機制
–只要 obj == obj1 認爲obj 和obj1是相同的元素
–equals與hashCode同時相等的時候,認爲相同元素
(HashSet基於HashMap實現的)
(利用了Hash鍵不能重複的特點)
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
public class Test02 {
HashSet set = new HashSet();
Person p = new Person();
p.name = "張三";
p.age = 15;
Person p3 = new Person();
p3.name = "張三";
p3.age = 15;
System.out.println(p.equals(p3));
set.add(p);
set.add(p3);
System.out.println(set);
}
}
class Person implements Comparable {
String name;
int age;
@Override
public String toString() {
return "name = " + this.name + "age =" + this.age;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Person)) {
return false;
}
if (((Person)obj).name.equals(this.name)) {
return true;
}
return false;
}
@Override
public int hashCode() {
return this.name.hashCode();
}
@Override
public int compareTo(Object o) {
if (o instanceof Person) {
Person p = (Person)o;
if (this.age > p.age) {
return 1;
} else if(this.age == p.age) {
return 0;
} else {
return -1;
}
}
return 0;
}
}