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
- TreeSet的特性
- 集合框架-TreeSet集合框架
- HashSet、TreeSet、CopyOnWriteArraySet和CopyOnWriteArrayList
- JDK原始碼分析-TreeSetJDK原始碼
- 橫掃Java Collections系列 —— TreeSetJava
- TreeSet重寫Comparator排序排序
- Treeset的兩種排序方法排序
- 使用TreeSet構造排序的集合排序
- Set集合的直接子類TreeSet
- java TreeSet去重與排序入門Java排序
- Java Set 常用集合 HashSet、LinkedHashSet、TreeSetJava
- 轉:Java中的HashSet, TreeSet, HashMap, TreeMapJavaHashMap
- 死磕 java集合之TreeSet原始碼分析Java原始碼
- Java集合框架原始碼剖析:TreeSet 和 TreeMapJava框架原始碼
- Java常用資料結構之Set之TreeSetJava資料結構
- java基礎:HashSet/LinkedHashSet/TreeSet — 原始碼分析Java原始碼
- HashSet/HashMap、TreeSet/TreeMap、LinkedHashSet/LinkedHashMap 區別HashMap
- Java集合(3)一 紅黑樹、TreeMap與TreeSet(上)Java
- Java集合(4)一 紅黑樹、TreeMap與TreeSet(下)Java
- 關於HashSet與TreeSet的區別與聯絡
- TreeSet的null值與元素型別的約束Null型別
- 集合框架-TreeSet的add()方法的原始碼解析框架原始碼
- 透過Treeset解決隨機數排序問題隨機排序
- List集合(ArrayList-LinkedList);Set集合(HashSet-TreeSet)
- 計算機程式的思維邏輯 (44) – 剖析TreeSet計算機
- 計算機程式的思維邏輯 (44) - 剖析TreeSet計算機
- Java 容器和泛型(3)HashSet,TreeSet 和 LinkedHashSet比較Java泛型
- Java中Collection Frame中常用集合簡析(ArrayList,Vector,HashSet,TreeSet...)Java
- Java集合系列(三):HashSet、LinkedHashSet、TreeSet的使用方法及區別Java
- 好程式設計師Java培訓分享treeset和hashset的區別程式設計師Java
- 關於在TreeSet中新增自定義類 報ClassCastException的解決方法ASTException
- 三,TreeMap和HashMap,TreeSet和HashMap的區別以及方法使用上的不同HashMap
- java基礎學習之十:集合型別Set/List/Map(TreeSet,LinkedList,TreeMap)Java型別
- 集合框架-TreeSet保證元素唯一性和自然排序的原理和圖解框架排序圖解
- Java集合詳解7:一文搞清楚HashSet,TreeSet與LinkedHashSet的異同Java
- 資料結構與演算法(十四)深入理解紅黑樹和JDK TreeMap和TreeSet原始碼分析資料結構演算法JDK原始碼
- 什麼是泛型?,Set集合,TreeSet集合自然排序和比較器排序,資料結構-二叉樹,資料結構-平衡二叉樹泛型排序資料結構二叉樹