自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個排名調整問題惡心了我整整一天

開發(fā) 后端
在招投標行業(yè),某個項目的某個標段會有多家投標人來投標.為了選出中標企業(yè),會組織專家對投標人進行評審,在最后階段,如果有特殊原因允許對投標人排名進行臨時調整。今天就帶大家一起學習相關內容!

[[390816]]

 問題回顧


在招投標行業(yè),某個項目的某個標段會有多家投標人來投標.為了選出中標企業(yè),會組織專家對投標人進行評審,在最后階段,如果有特殊原因允許對投標人排名進行臨時調整

如上圖所示,我們可以點擊排名按鈕,在彈框中選擇期望的排名,對投標人排名進行調整;

問題分析

🙌場景一

假如我們將第一名調整為第二名,那么第二名和第一名要對調位置,第三名保持不變,最終變?yōu)橛覀软樞?/p>

🙌場景二

假如我們把第三名調整為第一名,那么原來的第一名和第二名的排名要遞減1,最終變?yōu)橛覀软樞?/p>

🤦‍♀️以我淺薄的知識,感覺這個問題很棘手

剛開始我想我需要先把原來的排名查詢出來,然后分上面兩種情況去判斷,進而獲取各個元素的新排名,在建立舊排名和新排名的關聯(lián),然后通過這個關聯(lián)關系達到更新數(shù)據(jù)庫的目的

雖然這樣也可以做,但我最近放棄了這種方式,采用引入鏈表來實現(xiàn),下面來一起看看

解決方案

  1.  HashMap<String, Object> params = new HashMap<>(); 
  2.  params.put("projectId", bidder.getProjectId()); 
  3.  params.put("sectionId", bidder.getSectionId()); 
  4.  
  5.  LinkedList<Integertemp = new LinkedList<>(); 
  6.  //查詢當前所有投標人排名 
  7.  LinkedList<Bidder> ranks = this.selectBidderRanking(bidder); 
  8.  
  9. //將所有企業(yè)舊排名先放入鏈表中 
  10.  ranks.forEach(i -> { 
  11.      temp.add(i.getBidderId()); 
  12.  }); 
  13.  //移除當前元素[就是跳轉排名的那個企業(yè)] 
  14.  temp.remove(bidder.getBidderId()); 
  15.  //指定位置插入元素[以新排名為位置,重新插入那個企業(yè)] 
  16.  temp.add(Integer.parseInt(bidder.getRank()) - 1, bidder.getBidderId()); 
  17.  
  18.  //更新排名 
  19.  
  20.  for (int i = 0; i < temp.size(); i++) { 
  21.      bidder.setBidderId(temp.get(i)); 
  22.      bidder.setRank(String.valueOf(i + 1)); 
  23.      bidderMapper.updateBidderRank(bidder); 
  24.  } 

在我們剛剛分析的過程中,其實最麻煩的地方就是一個企業(yè)排名變化以后,其他的都要跟著變化,通過利用鏈表,我們只需要關注他的新排名,對應其他元素的升降已經由鏈表幫我們處理好,我們只需要重新遍歷,就可以獲取到新的排名。

 

責任編輯:姜華 來源: 今日Java
相關推薦

2021-04-29 08:05:50

APP套路央視賺錢

2019-11-07 15:30:00

EmacsIDE

2022-05-31 08:35:05

RocketMQACK客戶端

2018-12-09 14:55:07

區(qū)塊鏈加密貨幣比特幣

2017-03-21 21:17:50

大數(shù)據(jù)數(shù)據(jù)互聯(lián)網

2021-07-15 09:49:08

B站宕機黑客

2015-06-17 14:25:04

2013-01-08 13:32:31

SEO GTD

2020-11-04 07:56:19

工具Linux 翻譯

2011-05-23 18:32:46

SEO

2020-11-20 08:01:37

程序員產品經理轉型

2015-10-29 11:36:45

Google技術經理程序員

2020-04-03 09:45:09

Java多線程接口

2020-05-08 13:52:53

5G2025年工程師

2009-06-16 12:53:06

2020-09-27 14:13:50

Spring BootJava框架

2021-09-13 08:41:52

職場互聯(lián)網自閉

2022-05-16 08:42:26

Pandasbug

2025-02-13 07:49:18

2018-10-22 17:52:28

GitHub代碼開發(fā)者
點贊
收藏

51CTO技術棧公眾號