Java基礎
集合框架(TreeSet)
Set:無序,不可以重複元素。
HashSet:數據結構是哈希表。線程是非同步的。
保證元素唯一性的原理:判斷元素的hashCode值是否相同。
如果相同,還會繼續判斷元素的equals方法,是否爲true。
TreeSet:可以對Set集合中的元素進行排序。
底層數據結構是二叉樹。
保證元素唯一性的依據:
compareTo方法return 0.
TreeSet排序的第一種方式:
讓元素自身具備比較性。
元素需要實現Comparable接口,覆蓋compareTo方法。
這種方式也成爲元素的自然順序,或者叫做默認順序。
TreeSet的第二種排序方式:
當元素自身不具備比較性時,或者具備的比較性不是所需要的。
這時就需要讓集合自身具備比較性。
在集合初始化時,就有了比較方式。
排序時,當主要條件相同時,一定判斷一下次要條件。
當元素自身不具備比較性,或者具備的比較性不是所需要的。
這時需要讓容器自身具備比較性。
定義了比較器,將比較器對象作爲參數傳遞給TreeSet集合的構造函數。
當兩種排序都存在時,以比較器爲主。
定義一個類,實現Comparator接口,覆蓋compare方法。
泛型
泛型:JDK1.5版本以後出現新特性。用於解決安全問題,是一個類型安全機制。
好處
1.將運行時期出現問題ClassCastException,轉移到了編譯時期。,
方便於程序員解決問題。讓運行時問題減少,安全。,
2,避免了強制轉換麻煩。
泛型格式:通過<>來定義要操作的引用數據類型。
在使用java提供的對象時,什麼時候寫泛型呢?
通常在集合框架中很常見,
只要見到<>就要定義泛型。
其實<> 就是用來接收類型的。
當使用集合時,將集合中要存儲的數據類型作爲參數傳遞到<>中即可。
泛型類
什麼時候定義泛型類?
當類中要操作的引用數據類型不確定的時候,
早期定義Object來完成擴展。
現在定義泛型來完成擴展。
泛型方法
泛型類定義的泛型,在整個類中有效。如果被方法使用,
那麼泛型類的對象明確要操作的具體類型後,所有要操作的類型就已經固定了。
爲了讓不同方法可以操作不同類型,而且類型還不確定。
那麼可以將泛型定義在方法上。
特殊之處:
靜態方法不可以訪問類上定義的泛型。
如果靜態方法操作的應用數據類型不確定,可以將泛型定義在方法上。
泛型限定
? 通配符。也可以理解爲佔位符。
泛型的限定;
? extends E: 可以接收E類型或者E的子類型。上限。
? super E: 可以接收E類型或者E的父類型。下限