JAVA高效實現列表上下移動 置頂的高效計算方法

2021-08-21 13:05:11 字數 754 閱讀 3022

大家可能常常遇到像文章列表、商品列表,業務要求我們實現列表能自動上下移動和置頂。遇到這樣我們大多數往往想的是很簡單,給個排序欄位sort型別為int不就行了嗎?

它的實現方法,每當新增一條記錄的時候,sort都會在前一條記錄上+1。例如:我們用這5條記錄來進行排序。記錄1,sort:1;記錄2,sort:2;記錄3,sort:3;記錄4,sort:4;記錄5,sort:5。現在有這麼乙個需求,記錄4往上移動。實現它很簡單,只需要將它與記錄3交換sort值。反之,記錄4往下移動也是一樣,只需要將它與記錄5交換sort值。但是需要將記錄4置頂,這裡不再是將記錄4與記錄1進行位置的交換了,是需要將記錄4的位置設定為1並且記錄1、記錄2、記錄3的位置,都需要+1,造成迴圈呼叫資料庫去更新這些資料的位置。案例4條資料不覺得效能有什麼影響,但是資料量上萬、十萬、百萬的時候呢?可想而知對使用者體驗、應用系統、資料庫系統都非常大。

實際上針對以上問題我們只需要變相的將sort設定為double型別,進而完美的解決。

它的實現方法,每當新增一條記錄的時候,sort都會在前一條記錄上+1。例如:我們用這5條記錄來進行排序。記錄1,sort:1;記錄2,sort:2;記錄3,sort:3;記錄4,sort:4;記錄5,sort:5。現在有這麼乙個需求,記錄4往上移動。實現它很簡單,只需要將它與記錄3交換sort值。反之,記錄4往下移動也是一樣,只需要將它與記錄5交換sort值。但是需要將記錄4置頂,這裡只需要將記錄1的sort值1減0.1等於0.9,即記錄4的sort值。這樣就無需再調整記錄1、記錄2、記錄3的值。這樣就很好的解決了大量資料更新的問題。

java實現列表的上下移動和置頂操作

一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。2 思路是向上移動的時候,查詢出當前資料的上一條資料的sort值,兩者交換sort值,同理向下移動的時候,查詢出下一條資料的sort值,兩者交換。3 ssm框架中的sql及 實現 ...

java實現列表的上下移動和置頂操作

一 上下移動 1 在資料庫表中新新增一列名為sort,初始值與各條資料的id相同,初始list排序按照sort的值排序。3 ssm框架中的sql及 實現 2 依次交換sort資料 for int i 0 ifor usertest e list public static void swap2 li...

java 上下移動資料排序

向上移動就把上一條資料和本條資料的排序字段交換下 update sys custom group as a,sys custom group as b set a.seq b.seq,b.seq a.seq where a.id 051d11d139794532963beb75f40c0afc an...