首頁 > 人文

TreeSet-兩種比較方式的對比

由 碼一碼程式碼 發表于 人文2022-12-02

簡介即然實現Comparable介面的類支援排序,如果有一個List列表或者陣列中存的是實現Comparable介面的類的物件,則該List列表或陣列可以透過Collections

承蒙在字典裡的意思是什麼

八 TreeSet-兩種比較方式的對比

1。1 問題提問

1

兩種比較器的區別

2

關於返回值的規則

TreeSet-兩種比較方式的對比

1。3 問題解答

1

兩種比較器的區別

自然排序

Comparable

是排序介面。

若一個類實現了Comparable介面,就意味著“該類支援排序”

在以後的任何位置都能比較大小

即然

實現Comparable介面的類支援排序,如果有一個List列表或者陣列中存的是實現Comparable介面的類的物件,

則該List列表或陣列可以透過

Collections

sort(或

Arrays

sort)進行排序。

比較器排序

comparator

是比較器介面。

我們若需要控制某個類的次序,而該類本身不支援排序

即沒

有實現Comparable介面

那麼,我們可以建立一個“該類的比較器”來進行排序。這個“比較器”只需要實現

Comparator介面即可。屬於臨時性的一個比較

2

關於返回值的規則

兩個比較器的返回值規則

若是當前物件比目標物件大,則返回1,那麼當前物件會排在目標物件的後面

存右邊

若是當前物件比目標物件小,則返回

-

1

,那麼當前物件會排在目標物件的後面

存左邊

若是兩個物件相等,則返回0

則認為這兩個物件相等不分先後

當著兩個物件所比較的內容相同返回0的時候有兩種情況

1

如果是set集合

那麼相同的不會往裡存

2

如果是其他容器

會存入到容器中並且不分先後

注意

在使用的時候預設使用自然排序

當自然排序不滿足需求的時候使用比較器進行排序

常用的一些類如String

Integer

等有已經實現了自然排序

預設按照字典順序排

1。4 補充程式碼

集合服務類排序方法

List

<

Integer

>

list

=

new

ArrayList

<>

();

list

add

1

);

//Integer也是物件 自定義物件也是可以的不過需要實現排序介面

list

add

5

);

list

add

3

);

list

add

2

);

list

add

7

);

Collections

sort

list

);

System

out

println

list

);

九 資料結構-二叉樹

1。1 問題提問

1

為什麼要使用樹

2

樹的常用術語

3

樹的分類

TreeSet-兩種比較方式的對比

1。3 問題解答

1

為什麼要使用樹

1

有序陣列插入資料項和刪除資料項太慢

要經過資料的移動

2

連結串列查詢資料太慢

需要一個節點一個節點的找

3

在樹中能非常快速的查詢資料項

插入資料項和刪除資料項

A

1

/

\

B

C

2

/

\

\

D

E

F

3

/

/

\

/

\

\

G

H

I

J

K

l

4

/

z

5

Tree

n

n

>=

0

個節點的有限集

n

=

0

時稱為空樹

在任意一棵非空樹中

1

有且僅有一個特定的稱為根

root

的節點

2

當n

>

1

其餘節點可以分為m

m

>

0

個互不相交的有限集T1

T2

。。。

其中每個集合本身又是一

個樹

並且稱為根的子樹

SubTree

windows中的磁碟就是樹結構

資料夾結構

注意

節點

=

結點

一個意思的不同翻譯

2

樹的常用術語

1

節點

節點物件

包含節點的基本資訊

資料

子節點地址

父節點地址

。。)

2

路徑

順著連線節點的邊從一個節點到另一個節點

所經過的節點順序排列稱為路徑

3

樹最上邊的節點稱為根節點

一棵樹只有一個根

而且從根到任何節點有且只有一條路徑

A就是根節點

3

父節點

每個節點都有一條邊向上連線到另一個節點

這個另一個節點就稱為該節點的父節點

, (

B就是D的父節點

4

子節點

每個節點都有一條邊向下連線到另一個節點

下面這個節點就是該節點的子節點

D就是B的子節點

5

兄弟節點

具有相同父節點的節點互稱為兄弟節點

B

C

就是兄弟節點

5

葉子節點

沒有子節點的節點稱為葉子節點

z

H

I

J

K

L

就是葉子節點

6

子樹

每個節點可以看

做為

一個子樹的根

它和它所有的子節點

子節點的子節點組合在一起就是一個子樹

7

訪問

訪問一個節點是為了在這個節點上執行一些操作

如檢視節點的資料項

但是如果僅僅是經過一個節點

不認為是訪問了這個節點

8

從根開始定義,根為第一層,根的子節點為第二層,以此類推

9

高度

樹中節點的最大層次稱為樹的高度

樹的高度可以這樣理解:把整棵樹想象為一棟樓房,從葉子節點為1,向上開始計數,

到此節點(包括此節點)的數值為此節點的高度,

10

深度

樹的深度可以這樣理解,計算一個節點的深度,從根節點算起(記住從1開始計數

而不是0)

到該節點所經過的節點數(包括此節點)為樹的深度

11

節點的度

***

節點擁有的子樹數量稱為節點的度

度為0的節點稱為葉子節點或終端節點

度不為0的節點稱為非終端節點或分支節點

除了根節點以外分支節點也稱為內部節點

樹的度是指樹內各節點的度的最大值

梅開九度

A節點度為2

B節點度為2

C節點度為1

F節點度為3

最後一排的節點度為0稱為終端

節點

這個完成的數的度是3

12

節點的權

節點值

相當於這個點的編號

有些時候這個權是用路徑來表示的

13

森林

多棵子樹構成一個森林

3

樹的分類

二叉樹

二叉查詢樹

平衡二叉樹

紅黑樹

B樹

b

+

1。4 二叉樹詳細講解

1

概念

樹的每個節點最多隻能有兩個子節點

可以有一個

可以沒有

子節點分為左節點和

右節點

A

A

A

A

/

\

/

\

B

C

B

C

2

分類

斜樹

所有結點

都只有左子樹的

叫做

左斜樹,所有節點都只有右子樹的

叫做

右斜樹

A

A

/

\

B

C

滿二叉樹

在一棵二叉樹中

如果所有分支節點都存在左子樹和右子樹

並且所有葉子節點都

在同一層上

A

/

\

B

C

/

\

/

\

D

E

F

I

完全二叉樹

若設二叉樹的深度為k,除第

k

層外,其它各層

1

~k

-

1

結點數

都達到最大個數,第k

層所有的

結點

都連續集中在最左邊,這就是完全二叉樹。

通俗講

二叉樹中除去最後一層節點,剩餘的為滿二叉樹

而且最後一層的結點依次從左到右分佈,中間沒有隔開的,就是完全二叉樹

A

/

\

B

C

/

\

/

\

D

E

F

G

/

\

H

I

TreeSet-兩種比較方式的對比

Tags:節點二叉樹排序list物件