日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java 獲取兩個List的交集和差集,以及應用場景操作

瀏覽:38日期:2022-08-23 18:40:23

背景介紹

在實際項目中,特別是一些管理后臺類的項目,會遇到底層數據是按照一對多關系的數據表存儲的管理界面。列表頁是一對多關系中一對應的數據列表,二級的詳情頁中是一對多關系中多對應的多條數據展示。通常二級頁面是能夠增、刪、改數據的編輯頁面,在點擊保存提交數據后,服務器端需要插入新增的數據,刪除要刪除的數據,更新改變的數據。

例如,在汽車電商領域,如果要實現一輛車型在不同省份有不同的價格行情,就需要有一個車價管理的后臺管理界面。每輛車對應的詳情界面管理各省價格行情,增加該車在某個省份的行情,或者更新某個省份的行情,或者該車暫時去除某個省份的行情等功能,需要服務器端保證正確地數據存儲。

交集:指的是兩個List對象中都有的元素。

差集:指的是一個List對象中有,而另一個List對象中沒有的元素。

轉化為一般問題

在車價管理的車輛詳情頁面點擊保存各省行情按鈕后,請求會傳送一組數據到服務端,服務端把這組數據保存到一個List對象中。然后從數據庫中獲取該車型之前的各省行情數據并保存到List對象中,那么怎么找出哪些數據是要新增的,哪些數據是要刪除的,又有哪些數據是要更新的呢?

如果客戶端傳送的數據中有的省份行情數據,而數據庫中沒有該省行情數據記錄,則這些數據是要插入數據庫中的。如果客戶端傳送的數據有的省份行情數據,數據庫中也有改省的行情數據,則這些數據是要更新的數據。如果數據庫中有的省份數據,而客戶端傳送的數據中沒有改省份數據,則這些數據是要刪除的。

經過上述分析,不難發現就是找出兩個List對象的交集和差集。例如,a為客戶端傳送的數據List對象,b為從數據庫中獲取的List對象。 a中有的元素,而b中沒有的元素就是要插入數據庫中的數據,即a與b的差集。a和b共有的元素就是要更新的數據,即a與b的交集。b中有的元素,a中沒有的就是要刪除的數據,即b與a的差集。

程序代碼

程序的大致思路是:利用LinkedHashMap key值的唯一性和順序存儲的特性,把provinceId作為key值,先用一個map添加一個List元素,然后再去比較另一個List對象中的元素,找出provinceId相同的對象和只有b中才有的對象。map中去除相同的key值的對象,剩余的就是a中獨有的元素。

各省行情類:

public class CarProvinceMarket { private Integer id; private Integer carId; private Integer provinceId; private Double price; private Integer createdBy; public Integer getCreatedBy() { return createdBy; } public void setCreatedBy(Integer createdBy) { this.createdBy = createdBy; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getCarId() { return carId; } public void setCarId(Integer carId) { this.carId = carId; } public Integer getProvinceId() { return provinceId; } public void setProvinceId(Integer provinceId) { this.provinceId = provinceId; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; }}

求兩個List對象交集、差集:

public class ListOperation { public static void sameAndDifferentOperation(List<CarProvinceMarket> a, List<CarProvinceMarket> b, List<CarProvinceMarket> sameItems, List<CarProvinceMarket> onlyAItems, List<CarProvinceMarket> onlyBItems){ if (a.isEmpty() && b.isEmpty()){ return; } LinkedHashMap<Integer, CarProvinceMarket> map = new LinkedHashMap<>(); LinkedHashMap<Integer, CarProvinceMarket> sameMap = new LinkedHashMap<>(); LinkedHashMap<Integer, CarProvinceMarket> onlyBMap = new LinkedHashMap<>(); for (CarProvinceMarket item: a){ map.put(item.getProvinceId(), item); } for (CarProvinceMarket item: b){ if (map.containsKey(item.getProvinceId())){//如果要更新a中的記錄,則要更新map中的元素,并添加到sameMapCarProvinceMarket carProvinceMarket = map.get(item.getProvinceId());carProvinceMarket.setPrice(100000d);sameMap.put(item.getProvinceId(), carProvinceMarket); }else {//新建的元素,需要設置相關成員變量item.setCreatedBy(4);onlyBMap.put(item.getProvinceId(),item); } } sameItems.addAll(sameMap.values()); onlyBItems.addAll(onlyBMap.values()); for (CarProvinceMarket item: sameItems){ map.remove(item.getProvinceId()); } onlyAItems.addAll(map.values()); } public static void main(String [] args){ ArrayList<CarProvinceMarket> aCarProMar = new ArrayList<>(); ArrayList<CarProvinceMarket> bCarProMar = new ArrayList<>(); for (int i=0; i<1000000; i++){ CarProvinceMarket aCar = new CarProvinceMarket(); aCar.setProvinceId((i + 1)/2); aCarProMar.add(aCar); CarProvinceMarket bCar = new CarProvinceMarket(); bCar.setProvinceId((i + 2)/2); bCarProMar.add(bCar); } LinkedList<CarProvinceMarket> sameItems = new LinkedList<>(); LinkedList<CarProvinceMarket> onlyAItems = new LinkedList<>(); LinkedList<CarProvinceMarket> onlyBItems = new LinkedList<>(); Long start = System.currentTimeMillis(); sameAndDifferentOperation(aCarProMar, bCarProMar, sameItems, onlyAItems, onlyBItems); System.out.println('time = ' + (System.currentTimeMillis() - start)); }}

總結

在開發過程中,遇到問題要找出問題的一般性,轉化概念,理解本質,方能解決問題。

代碼鏈接: github

以上這篇Java 獲取兩個List的交集和差集,以及應用場景操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美高清一区| 精品视频网站| 捆绑调教日本一区二区三区| 欧美国产免费| 日韩av网站在线观看| 久久国产三级| 久久久久国产精品一区二区| 亚洲在线观看| 日韩精品一级| 免费观看在线色综合| 国产探花一区| 亚洲高清激情| 亚洲一二av| 麻豆精品视频在线| 日韩精品一卡| 国产精品视频首页| 69堂精品视频在线播放| 精品国产日韩欧美精品国产欧美日韩一区二区三区| 精品一区二区三区中文字幕视频| 日本精品影院| 久久久久91| 免费国产自久久久久三四区久久 | 国产综合欧美| 天堂av在线一区| 欧美另类中文字幕| 国产粉嫩在线观看| 久久免费黄色| 99精品一区| 国产一区导航| 另类中文字幕国产精品| 久久影院资源站| 精品午夜av| 荡女精品导航| a国产在线视频| 麻豆91精品视频| 久久av电影| 日韩在线观看中文字幕| av高清不卡| 日本a级不卡| 欧美片第1页综合| 国产一区二区三区不卡av| 日本少妇一区| 国产欧美日韩一区二区三区在线| 日本不卡一区二区三区| 精品国产亚洲一区二区三区| 美日韩精品视频| 国产一区二区三区久久久久久久久| 欧美日韩激情在线一区二区三区| 天堂va蜜桃一区二区三区| 国产激情精品一区二区三区| 丁香婷婷久久| 亚洲欧美激情诱惑| 国产亚洲第一伦理第一区| 日韩av中文字幕一区二区| 国产精品视频一区二区三区四蜜臂 | 欧美日韩激情| 亚洲精品综合| 国产欧美日韩影院| 成人黄色av| 一区二区国产在线| 欧洲亚洲一区二区三区| 国产精品一区三区在线观看| 久久亚洲精品伦理| 日韩欧美网址| 久久国产视频网| 国产精品美女| 美女视频一区在线观看| 日韩av自拍| 蜜臀久久久久久久| 日韩精品国产精品| 欧美片第1页| 亚洲免费一区三区| 欧美肉体xxxx裸体137大胆| 欧美亚洲三区| 欧美专区在线| 日韩美女一区二区三区在线观看| 中文无码久久精品| 久久久久.com| 日韩高清不卡在线| 日本在线啊啊| 99久精品视频在线观看视频| 999在线观看精品免费不卡网站| 久久视频精品| 精品一区欧美| 日韩欧美一区二区三区在线观看 | 欧美日韩夜夜| 深夜日韩欧美| 国产精品免费不| 日本色综合中文字幕| 亚洲欧美成人综合| 99久久99久久精品国产片果冰| 国产精品久久久久久模特| 免费视频国产一区| 国产精品magnet| 中文在线а√在线8| 日韩三级一区| 国产欧美一区二区三区米奇 | 欧美午夜不卡| 久久久精品久久久久久96| 青草综合视频| 色婷婷色综合| 激情久久中文字幕| 青草av.久久免费一区| 色偷偷色偷偷色偷偷在线视频| 日韩精品dvd| 麻豆理论在线观看| 精品国产中文字幕第一页 | 日本a口亚洲| 国产激情精品一区二区三区| 青青草精品视频| 日韩不卡一二三区| 日本不卡高清视频| 91精品福利观看| 亚洲色图国产| 一区二区小说| 蜜臀久久久久久久| 日韩av在线免费观看不卡| 亚洲午夜av| 在线看片不卡| 欧美不卡高清一区二区三区| 麻豆一区二区三| 日韩av一级片| 亚洲一区中文| 91视频一区| 国产精品三p一区二区| 99久久99视频只有精品| 亚洲美女91| 欧美久久久网站| 日韩电影免费在线观看| 99久久久久国产精品| 精品伊人久久| 欧美a在线观看| 精品一区二区三区亚洲| 国产日韩欧美中文在线| 首页欧美精品中文字幕| 成人日韩在线观看| 91欧美日韩| 久久久久久婷| 波多野结衣久久精品| 日韩天堂在线| 久久精品影视| 成人av二区| 亚洲欧美日韩国产综合精品二区| 亚洲精品在线观看91| 亚洲国产日韩欧美在线| 亚洲国产一区二区三区在线播放 | 国产精品最新自拍| 国产精品亚洲综合色区韩国| 久久精品av麻豆的观看方式| 视频一区二区三区在线| 亚洲精品日韩久久| 日韩av电影一区| 久久精品免视看国产成人| 丁香婷婷久久| 激情综合激情| 亚州欧美在线| 国产精品成人一区二区不卡| 日韩三区免费| 尤物在线精品| 中文字幕日韩亚洲| 欧美中文一区二区| 成年男女免费视频网站不卡| 亚洲资源网站| 成年男女免费视频网站不卡| 亚洲在线电影| 国产高清一区二区| 91嫩草精品| 美女免费视频一区| 亚洲深夜福利| 综合日韩av| 日韩精品国产欧美| 精品国产免费人成网站| 亚洲一区二区三区四区电影| 国产suv精品一区二区四区视频 | 亚洲激情另类| 国产精品成久久久久| 日韩中文字幕亚洲一区二区va在线| 久久影院一区二区三区| 丝袜a∨在线一区二区三区不卡| 欧美xxxx中国| 国产精品中文字幕制服诱惑| 亚洲神马久久| 91精品国产乱码久久久久久久| 国产精品2区| 69堂免费精品视频在线播放| 人在线成免费视频| 69精品国产久热在线观看| 亚洲少妇诱惑| 国产va免费精品观看精品视频| 日韩不卡一区二区三区| 亚洲深深色噜噜狠狠爱网站 | 国产日韩视频| 亚洲少妇诱惑| 欧美手机在线| 亚洲一区免费| 国产欧美日韩精品高清二区综合区 | 国产一区视频在线观看免费| 国产精品v日韩精品v欧美精品网站| 99亚洲视频| 久久精品高清|