List Sort 使用的注意幾點

2021-09-06 00:25:40 字數 1273 閱讀 6888

以前有個哥們好像寫過類似的文章。當時沒有注意,今天才發現有時候sort時候真會帶來麻煩。說說我遇到的麻煩:

我需要監控乙個機器的狀態,得到的資料類似:

1-prd 8:30:00

2-std 8:30:00

3-prd 9:30:00

4-std 9:31:00

我把資料都放在乙個list容器裡面,同時stateitem實現了icomparable介面,是datetime來排序。其實資料過來時候也是按照時間來排序,但是我仍然做了sort操作。

結果問題出現了,我出來的統計報表跟以前跑的報表由差距。

prd time : (2)-(1)+(4)-(3) = 1 min

std time : (3)-(2) = 1 hour

結果排序後,資料順序成了(1)和(2)調換了,

1-std 8:30:00

2-prd 8:30:00

3-prd 9:30:00

4-std 9:31:00

prd time : (4)-(2) = 1 hour +1min

std time : 0

結果大相徑庭。 :(

總結:排序的時候要考慮到相同rank的情況。

另外一種情況是由於比較數接近造成的問題

int icomparable.compareto( stateitem item)

好像沒有錯。但請考慮當totalminutes<1為小數的情況,則無法判斷兩個物件的次序。

ok,轉成

return this.datetime.ticks.compareto(item.datetime.ticks);

enn….

關於排序的介面有2個:

1 icomparable

子項完成。

2. icomparer

容器完成

除此,sort支援直接呼叫方法

listexample.sort(method1);

public int method1(item x, item y)

c shared ptr使用的幾點注意

先介紹一下shared ptr.是c 為了提高指標安全性而新增的智慧型指標,方便了記憶體管理。功能非常強大,非常強大,非常強大 不單單是shared ptr,配合week ptr以及enable share from this 以及share from this 對於支援智慧型指標的c 版本程式設計...

ijg庫的使用的幾點注意

使用vs中個nmake 進行編譯,對於這個版本的庫,在編譯的時候需要注意這幾個點 1.可以在cmd中使用命令進行編譯 前提是,將 nmake的路徑配置到環境變數中path下了 形如 設定三個變數 變數名 變數值 設定好這些變數之後,nmake就可以在cmd中使用了.進入到ijg原始碼資料夾中,然後執...

iptables使用中幾點注意的問題

iptables共有3張表 filter,nat,mangle,用 t name選擇。filter是預設表,有input,output,forward三條鏈 nat在資料報建立新連線的時候用,有prerouting,postrouting,output三條鏈 mangle在資料報改變時使用,有pre...