1. 程式人生 > 其它 >TreeSet集合 和方法重寫

TreeSet集合 和方法重寫

package com.bo.collection;

import java.util.Iterator;
import java.util.TreeSet;

//TreeSet 儲存結構 紅黑樹 要實現comparable介面 不然有得資料新增不進去
//如果compareTo()方法的返回值為0,則認為是重複元素
//在person實現了
public class Demo11 {
public static void main(String[] args) {
//建立集合
TreeSet<String> treeSet =new TreeSet<>();
//新增
treeSet.add("abc");
treeSet.add("def");
treeSet.add("ghi");
System.out.println("元素個數:"+treeSet.size());
System.out.println(treeSet.toString());
//刪除
treeSet.remove("abc");
System.out.println("刪除後元素個數:"+treeSet.size());
//遍歷
System.out.println("------增強for------");
for (String s : treeSet) {
System.out.println(s);
}
System.out.println("------迭代器------");
Iterator it= treeSet.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
System.out.println(treeSet.contains("def"));
System.out.println("=====================================");
TreeSet<Person> pts =new TreeSet<>();
Person p1=new Person("張學友",23);
Person p2=new Person("劉德華",24);
Person p3=new Person("郭富城",24);
Person p4=new Person("張學友",22);
pts.add(p1);
pts.add(p2);
pts.add(p3);
pts.add(p4);
System.out.println("元素個數"+pts.size());//
//ClassCastException: com.bo.collection.Person cannot be cast to java.lang.Comparable
//異常 不能把person轉成comparable 紅黑樹不知道比什麼 要重寫比較方法
System.out.println(pts.toString());
}
}

package com.bo.collection;



public class Person implements Comparable<Person> {
private String name;
private int age;

public Person() {
}

public Person(String name, int age) {
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{" + "name=" + name + ", age=" + age + '}';
}



public int hashCode() {
int n1 = this.name.hashCode();
int n2 = this.age;
return n1+n2;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null ) return false;
if (o instanceof Person){
Person p = (Person) o;
if (this.name.equals(p.getName())&&this.age== p.getAge());
return true;
}
return false;
}

// @Override
//public int compareTo(Object o) {

// if (o instanceof Person){
// Person p=(Person) o;
// int n1 = this.getName().compareTo(p.getName());
// int n2 = this.age-p.getAge();
// return n1==0?n2:n1;
// }
// return 0;
// }

@Override//上面那個沒有用泛型 這個沒有重寫
public int compareTo(Person o) {
return 0;
}
}