Treeset的兩種排序方法
Treeset 的自定義的兩種排序方式
第一種:在元素中定義排序規則。元素自身具有比較性實現Comparable介面 覆蓋compareTo方法
第二種:在集合中定義排序 實現
構造一個新的空 TreeSet,它根據指定比較器進行排序。
第一種:在元素中定義排序規則。元素自身具有比較性實現Comparable介面 覆蓋compareTo方法
import java.util.Iterator; import java.util.TreeSet; /*** *TreeSet是一個有序集合,TreeSet中元素將按照升序排列,預設是按照 自然順序進行排列,意味著TreeSet中元素要實現Comparable介面。 我們可以在構造TreeSet物件時,傳遞實現了Comparator介面的比較器物件。 注意排序時:當主要的條件相同時,判斷次要條件。 * @author Administrator * */ public class TreeSetTest { public static void main(String[] args) { TreeSet treeset = new TreeSet();//定義一個集合 treeset.add(new person2(10, "liuyia")); treeset.add(new person2(10, "liuyib")); treeset.add(new person2(15, "liuyi34")); treeset.add(new person2(11, "liuyi4")); treeset.add(new person2(12, "liuyi4")); Iterator itera = treeset.iterator(); while (itera.hasNext()) { System.out.println(itera.next()); } } } class person2 implements Comparable {//實現Comparable 介面 private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public person2(int age, String name) { this.age = age; this.name = name; } public int compareTo(Object o) { if(!(o instanceof person2)) throw new RuntimeException("物件不對哇!!"); person2 p = (person2)o; if(this.age>p.age) { return -1; } if(this.age<p.age) { return 1; } if(this.age==p.age) { return this.name.compareTo(p.name);//當主要的條件也就是age的值相同時時候此時判斷次要條件姓名 } return -1; } //用於設定列印結果 public String toString() { return age+" = "+"name"+name; } }
第二種:在集合中定義排序 實現
Comparator介面
覆蓋compare方法。TreeSet(Comparator<?
super E> comparator)
構造一個新的空 TreeSet,它根據指定比較器進行排序。
import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; public class TreeSetTest { public static void main(String[] args) { TreeSet treeset = new TreeSet( new mycomp());//定義一個集合 treeset.add(new person2(10, "liuyia")); treeset.add(new person2(10, "liuyib")); treeset.add(new person2(15, "liuyi34")); treeset.add(new person2(11, "liuyi4")); treeset.add(new person2(12, "liuyi4")); Iterator itera = treeset.iterator(); while (itera.hasNext()) { System.out.println(itera.next()); } } } class person2 { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public person2(int age, String name) { this.age = age; this.name = name; } public String toString() { return age+" = "+"name"+name; } } class mycomp implements Comparator { public int compare(Object o1, Object o2) { person2 p1 = (person2)o1; person2 p2 = (person2)o2; return -(p1.getAge()- p2.getAge()); } }
相關文章
- 使用TreeSet構造排序的集合排序
- mongodb常用的兩種group方法,以及對結果排序MongoDB排序
- ts - 兩種方法實現忽略大小寫的字串排序字串排序
- python list排序的兩種方法及例項講解Python排序
- TreeSet重寫Comparator排序排序
- java TreeSet去重與排序入門Java排序
- 好程式設計師Java培訓分享Java集合的兩種排序方法程式設計師Java排序
- Go 中的三種排序方法Go排序
- vue 跳轉的兩種方法Vue
- 兩種快速打造App的方法APP
- Java中三種常用的排序方法Java排序
- Shell中字串排序的幾種方法字串排序
- js實現兩種實用的排序演算法——冒泡、快速排序JS排序演算法
- 兩種動態建立表格的方法
- Js提交表單的兩種方法JS
- 透過Treeset解決隨機數排序問題隨機排序
- JS陣列隨機排序的三種方法JS陣列隨機排序
- 快速排序的三種實現方法 (C++)排序C++
- 用 Python 排序資料的多種方法Python排序
- MySQL建立資料庫的兩種方法MySql資料庫
- python之建立類的兩種方法Python
- React元件方法的兩種定義方式React元件
- 交換兩個資料的三種方法
- absolute定位css元素居中的兩種方法CSS
- Linux安裝MySQL的兩種方法LinuxMySql
- 【SQL】時間遞增的兩種方法SQL
- 更改Linux時區的兩種方法Linux
- redhat 6 配置 yum 源的兩種方法Redhat
- TabWidget/TabHost的兩種使用方法
- 建立安裝程式的兩種方法 (轉)
- PHP呼叫java類的兩種方法(轉)PHPJava
- AJAX 開發的兩種不同的方法(轉)
- TreeSet的特性
- 集合框架-TreeSet的add()方法的原始碼解析框架原始碼
- Python中幾種lambda排序方法Python排序
- C#各種加密方法,字典排序C#加密排序
- js 深拷貝兩種方法JS
- JavaSE匯出jar(兩種方法)JavaJAR