有序佇列比較
場景:
找出兩個有序佇列的相同值與不同值,資料庫中存在佇列A,需要更新為佇列B,佇列A包含且佇列B不包含的刪除,佇列A不包含且佇列B包含的插入,佇列A包含且佇列B包含更新。以下以古代一夫多妻制為例:
public void update(Integer manId,List<Integer> paramList){
List<Integer> dbList = demoMapper.queryWomanList(manId);
Collections.sort(dbList);
Collections.sort(paramList);
int dbSize = null == dbList ? 0 : dbList.size();
int paramSize = null == paramList ? 0 : paramList.size();
int dbIter = 0;
int paramIter = 0;
while(dbIter < dbSize || paramIter < paramSize){
if(dbIter == dbSize){
demoMapper.insert(manId, paramList.get(paramIter));
paramIter += 1;
continue;
}
if(paramIter == paramSize){
demoMapper.delete(manId, dbList.get(dbIter));
dbIter += 1;
continue;
}
if(dbList.get(dbIter).intValue() == paramList.get(paramIter).intValue()){
//do update
dbIter += 1;
paramIter += 1;
}else if(dbList.get(dbIter).intValue() > paramList.get(paramIter).intValue()){
demoMapper.insert(manId, paramList.get(paramIter));
paramIter += 1;
}else{
demoMapper.delete(manId, dbList.get(dbIter));
dbIter += 1;
}
}
}
完整程式碼請參考:https://github.com/465919283/demo
相關文章
- MQ 訊息佇列 比較MQ佇列
- 優先佇列的比較器佇列
- Java中幾個常用併發佇列比較 | BaeldungJava佇列
- 資料結構-棧&佇列&Deque實現比較資料結構佇列
- 訊息佇列中介軟體的選型與比較佇列
- 列舉比較
- 訊息佇列效能對比佇列
- 為什麼處理有序陣列比無序陣列快?陣列
- 分支預測:為什麼有序陣列比無序陣列快?陣列
- 主流的訊息佇列MQ比較,詳解MQ的4類應用場景佇列MQ
- js物件陣列Date的比較JS物件陣列
- 比較兩個陣列是否相等陣列
- 消費端如何保證訊息佇列MQ的有序消費佇列MQ
- 佇列、阻塞佇列佇列
- 分割陣列的幾種方法比較陣列
- PHP的的陣列和比較符PHP陣列
- 佇列-單端佇列佇列
- 訊息佇列之JMS和AMQP對比佇列MQ
- 兩個有序陣列如何合併成一個有序陣列陣列
- 將兩個有序陣列合併為一個有序陣列陣列
- 佇列 和 迴圈佇列佇列
- 【佇列】【懶排序】佇列Q佇列排序
- 陣列模擬佇列 以及佇列的複用(環形佇列)陣列佇列
- 佇列 手算到機算 入門 佇列 迴圈佇列佇列
- HDU4546 比賽難度 (優先佇列)佇列
- 圖解--佇列、併發佇列圖解佇列
- 單調佇列雙端佇列佇列
- js 深比較和淺比較JS
- 佇列佇列
- Java、C、C++中的陣列的比較JavaC++陣列
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- Kafka 延時佇列&重試佇列Kafka佇列
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- Java版-資料結構-佇列(陣列佇列)Java資料結構佇列陣列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- 稀疏陣列、佇列陣列佇列
- 阻塞佇列一——java中的阻塞佇列佇列Java