자바 의 트 리 셋 과 트 리 맵

6959 단어 Java
TreeSet:
데이터 요 소 는 정렬 할 수 있 고 중복 할 수 없습니다.
대비:set 인터페이스:HashSet,요 소 는 hashcode 와 equals 방법 을 다시 써 야 합 니 다.
무게 제거:비 교 는 0 즉 중복 과 같다.
TreeMap:
key 가 정렬 하거나 비교 기 를 제공 할 수 있 도록 확보 합 니 다.
요소 정렬 가능  java.lang.Comparable + compareTo   new TreeSet().
 TreeSet 인 스 턴 스
public class Worker implements java.lang.Comparable {
	//  
	private String type;
	//  
	private double salary;
	public Worker() {
		// TODO Auto-generated constructor stub
	}
	
	
	public Worker(String type, double salary) {
		super();
		this.type = type;
		this.salary = salary;
	}


	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}

	/**
	 *      
	 */
	@Override
	public int compareTo(Worker o) {
		return this.salary>o.salary?1:( this.salary==o.salary?0:-1);
	}
	
	@Override
	public String toString() {
		return "  :"+this.type+",  :"+this.salary+"
"; } } import java.util.TreeSet; /** * Comparable * @author Administrator * */ public class TreeSetDemo2 { /** * @param args */ public static void main(String[] args) { Worker w1 =new Worker(" ",12000); Worker w2 =new Worker(" ",8000); Worker w3 =new Worker(" ",5000); TreeSet employees =new TreeSet(); employees.add(w1); employees.add(w2); employees.add(w3); System.out.println(employees); } }

    TreeMap 실례
public class Worker implements java.lang.Comparable {
	//  
	private String type;
	//  
	private double salary;
	public Worker() {
		// TODO Auto-generated constructor stub
	}
	
	
	public Worker(String type, double salary) {
		super();
		this.type = type;
		this.salary = salary;
	}


	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}

	/**
	 *      
	 */
	@Override
	public int compareTo(Worker o) {
		return this.salary>o.salary?1:( this.salary==o.salary?0:-1);
	}
	
	@Override
	public String toString() {
		return "  :"+this.type+",  :"+this.salary+"
"; } } import java.util.TreeMap; public class TreeMapDemo02 { /** * @param args */ public static void main(String[] args) { Worker w1 =new Worker(" ",12000); Worker w2 =new Worker(" ",8000); Worker w3 =new Worker(" ",5000); TreeMap employees =new TreeMap(); employees.put(w1,"bjsxt"); employees.put(w2,"bjsxt"); employees.put(w3,"bjsxt"); System.out.println(employees.keySet()); } }

 
2)정렬 업무 클래스 java.uti.Comparator+compare       new TreeSet(Comparator super E > comparator)
메모:데 이 터 를 추가 할 때 정렬 합 니 다.데이터 변경 은 원래 의 순서 에 영향 을 주지 않 습 니 다.데 이 터 를 수정 하지 마 십시오.그렇지 않 으 면 중복 될 수 있 습 니 다. 
TreeSet 인 스 턴 스

//TreeSet
public class Person {
	private final String name;//  
	private final int handsome;//    
	
	public Person() {
		name =null;
		handsome =0;
	}

	public Person(String name, int handsome) {
		super();
		this.name = name;
		this.handsome = handsome;
	}

	public String getName() {
		return name;
	}

	public int getHandsome() {
		return handsome;
	}
	
	@Override
	public String toString() {
		return "  :"+this.name+",    :"+this.handsome+"
"; } } /** * : * @author Administrator * */ public class TreeSetDemo { /** * @param args */ public static void main(String[] args) { Person p1 =new Person(" ",100); Person p2 =new Person(" ",1000); Person p3 =new Person(" ",1200); Person p4 =new Person(" ",50); // TreeSet , ( ) TreeSet persons =new TreeSet( new java.util.Comparator(){ @Override public int compare(Person o1, Person o2) { return -(o1.getHandsome()-o2.getHandsome()); } } ); persons.add(p1); //TreeSet persons.add(p2); persons.add(p3); persons.add(p4); System.out.println(persons); /* // p4.setHandsome(100); p4.setName(" "); */ //p4 p1 System.out.println(persons); } }
//TreeMap
public class Worker implements java.lang.Comparable {
	//  
	private String type;
	//  
	private double salary;
	public Worker() {
		// TODO Auto-generated constructor stub
	}
	
	
	public Worker(String type, double salary) {
		super();
		this.type = type;
		this.salary = salary;
	}


	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public double getSalary() {
		return salary;
	}
	public void setSalary(double salary) {
		this.salary = salary;
	}

	/**
	 *      
	 */
	@Override
	public int compareTo(Worker o) {
		return this.salary>o.salary?1:( this.salary==o.salary?0:-1);
	}
	
	@Override
	public String toString() {
		return "  :"+this.type+",  :"+this.salary+"
"; } } import java.util.Set; import java.util.TreeMap; public class TreeMapDemo { /** * @param args */ public static void main(String[] args) { Person p1 =new Person(" ",100); Person p2 =new Person(" ",1000); Person p3 =new Person(" ",1200); Person p4 =new Person(" ",50); TreeMap map =new TreeMap( new java.util.Comparator(){ @Override public int compare(Person o1, Person o2) { return -(o1.getHandsome()-o2.getHandsome()); } } ); map.put(p1, "bjsxt"); map.put(p2, "bjsxt"); map.put(p3, "bjsxt"); map.put(p4, "bjsxt"); // Set persons =map.keySet(); System.out.println(persons); } }

TreeSet 사용자 정의 요소 추가: TreeSet 에서 주의해 야 할 사항:  1.TreeSet 에 요 소 를 추가 할 때 요소 자체 가 자연 순서의 특성 을 가지 고 있다 면 요소 의 자연 순서의 특성 에 따라 정렬 하여 저장 합 니 다.  2.TreeSet 에 요 소 를 추가 할 때 요소 자체 가 자 연 스 러 운 순서 특성 을 가지 지 않 으 면 이 요소 가 속 한 클래스 는 Comparable 인 터 페 이 스 를 실현 하고 요소 의 비교 규칙 을 compare To(T o)방법 에 정의 해 야 합 니 다.      3.요 소 를 비교 할 때 compare To 방법 이 0 으로 되 돌아 오 면 이 요 소 는 중복 요소 로 간주 되 고 추가 할 수 없습니다.(주의:TreeSet 은 HashCode,equals 방법 과 아무런 관계 가 없습니다.)    4.TreeSet 에 요 소 를 추가 할 때 요소 자체 가 자 연 스 러 운 순서 특성 을 가지 지 않 고 요소 가 속 한 클래스 도 Comparable 인 터 페 이 스 를 실현 하지 못 하면 TreeSet 를 만 들 때 비교 기 를 입력 해 야 합 니 다.    5.  TreeSet 에 요 소 를 추가 할 때 요소 자체 가 자 연 스 러 운 순서 특성 을 가지 지 않 고 요소 가 속 한 클래스 가 Comparable 인 터 페 이 스 를 실 현 했 으 며 TreeSet 대상 을 만 들 때 도 비교 기 에 들 어 왔 다 면 비교 기의 비교 규칙 으로 우선 사용 합 니 다.

좋은 웹페이지 즐겨찾기