import lombok.*;
import org.junit.jupiter.api.Test;
import java.util.*;
/*
Comparable是物件自身的比較方式,而Comparator是外部定義的比較方式。
* */
public class T {
//Comparator外部比較器 User實體可以和Comparator解耦
@Test
public void comparatorTest() {
TreeSet<User> treeSet = new TreeSet<>(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.id == o2.id) {
//name升序
return o1.name.compareTo(o2.name);
}
return o2.id - o1.id;//id降序
}
});
treeSet.add(User.builder().id(2).name("xixi").build());
treeSet.add(User.builder().id(5).name("haha").build());
treeSet.add(User.builder().id(8).name("xz").build());
treeSet.add(User.builder().id(2).name("hello").build());
treeSet.forEach(System.out::println);
}
@Test
public void comparableTest() {
TreeSet<User2> treeSet = new TreeSet<>();
treeSet.add(new User2(2));
treeSet.add(new User2(1));
treeSet.add(new User2(5));
treeSet.add(new User2(3));
treeSet.forEach(System.out::println);
}
}
@Builder
@Data
class User {
int id;
String name;
}
/*
Comparable 內部比較器
* */
@AllArgsConstructor
@Data
class User2 implements Comparable<User2> {
int id;
@Override
public int compareTo(User2 o) {
return this.id - o.id;
}
}
TreeSet
相關文章
- 【java】【集合】TreeSetJava
- HashSet、TreeSet、CopyOnWriteArraySet和CopyOnWriteArrayList
- JDK原始碼分析-TreeSetJDK原始碼
- TreeSet重寫Comparator排序排序
- 橫掃Java Collections系列 —— TreeSetJava
- HashSet vs. TreeSet vs. LinkedHashSet
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSetJava
- 4、Set集合——HashSet、TreeSet(Comparable、Comparator)
- Set集合的直接子類TreeSet
- java TreeSet去重與排序入門Java排序
- HashSet/HashMap、TreeSet/TreeMap、LinkedHashSet/LinkedHashMap 區別HashMap
- java基礎:HashSet/LinkedHashSet/TreeSet — 原始碼分析Java原始碼
- 死磕 java集合之TreeSet原始碼分析Java原始碼
- Java常用資料結構之Set之TreeSetJava資料結構
- List集合(ArrayList-LinkedList);Set集合(HashSet-TreeSet)
- Java集合(3)一 紅黑樹、TreeMap與TreeSet(上)Java
- TreeSet的null值與元素型別的約束Null型別
- 透過Treeset解決隨機數排序問題隨機排序
- Java集合(4)一 紅黑樹、TreeMap與TreeSet(下)Java
- 計算機程式的思維邏輯 (44) – 剖析TreeSet計算機
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及區別Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 三,TreeMap和HashMap,TreeSet和HashMap的區別以及方法使用上的不同HashMap
- Java集合詳解7:一文搞清楚HashSet,TreeSet與LinkedHashSet的異同Java
- 資料結構與演算法(十四)深入理解紅黑樹和JDK TreeMap和TreeSet原始碼分析資料結構演算法JDK原始碼
- 什麼是泛型?,Set集合,TreeSet集合自然排序和比較器排序,資料結構-二叉樹,資料結構-平衡二叉樹泛型排序資料結構二叉樹