자바 의 트 리 셋 과 트 리 맵
6959 단어 Java
데이터 요 소 는 정렬 할 수 있 고 중복 할 수 없습니다.
대비: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 대상 을 만 들 때 도 비교 기 에 들 어 왔 다 면 비교 기의 비교 규칙 으로 우선 사용 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.