TreeSet的null值與元素型別的約束
一、TreeSet
Java的TreeSet通過TreeMap來實現,具有自然排序的功能。
在預設情況下,元素不允許為null值,元素必須是相同型別,元素必須實現了Comparable介面;否則會出現java.lang.ClassCastException。
可以通過設定Comparator介面的例項,來實現元素允許為null值,元素為不同型別。
二、程式碼實現
(1)預設情況
TreeSet treeSet=new TreeSet();
treeSet.add(1);
treeSet.add(2.0);
輸出結果
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
at java.lang.Double.compareTo(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at cn.test.Test.main(Test.java:9)
(2)null值
TreeSet treeSet=new TreeSet((o1,o2)->{
return Objects.toString(o1).compareTo(Objects.toString(o2));
});
treeSet.add(1);
treeSet.add(null);
(3)不同型別
TreeSet treeSet=new TreeSet((o1,o2)->{
return Double.valueOf(o1.toString()).compareTo(Double.valueOf(o2.toString()));
});
treeSet.add(1);
treeSet.add(2.0);
相關文章
- C# 泛型 引用型別約束 值型別約束C#泛型型別
- SQL教程——常見的約束型別SQL型別
- PHP中的型別約束介紹PHP型別
- Java泛型(三):型別擦除帶來的約束與侷限性Java泛型型別
- CHECK約束中的NULL條件Null
- Sqlserver中所有約束的型別,建立、修改與刪除SQLServer型別
- PHP7型別約束PHP型別
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- 泛型的約束理解泛型
- Oracle唯一約束中NULL的處理OracleNull
- [20170516]nvl與非NULL約束.txtNull
- 值型別與引用型別的區別型別
- C#的型別——值型別與引用型別C#型別
- Oracle外來鍵約束中NULL的處理OracleNull
- Oracle constraints type 約束型別OracleAI型別
- 預設值+TS型別約束提高資料處理成功率型別
- MySQL——表的約束,資料型別,增刪查改MySql資料型別
- 完整性約束的型別(Types of Integrity Constraints)型別AI
- swift的值型別與inoutSwift型別
- NULL和唯一約束UNIQUE的對應關係Null
- not-null約束對執行計劃的影響Null
- [20170516]nvl與非NULL約束2.txtNull
- 值型別與引用型別型別
- Swift 中的值型別與引用型別使用指北Swift型別
- Null 與 “” 的區別Null
- JS 的型別(null 和 undefined 的區別)JS型別NullUndefined
- 32. 基本資料型別、約束條件資料型別
- NULL的資料型別(二)Null資料型別
- Python引用型別和值型別的區別與使用Python型別
- 關於HashSet與TreeSet的區別與聯絡
- C#泛型約束C#泛型
- Go 泛型之泛型約束Go泛型
- JavaScript - 基本型別與引用型別值JavaScript型別
- SCSS Null 型別CSSNull型別
- Go: 指標方法與值方法<->指標型別與值型別Go指標型別
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引
- XML Schema 字串資料型別及約束詳解XML字串資料型別
- NULL 值與索引Null索引