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

您的位置:首頁技術(shù)文章
文章詳情頁

Java 獲取兩個(gè)List的交集和差集,以及應(yīng)用場(chǎng)景操作

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

背景介紹

在實(shí)際項(xiàng)目中,特別是一些管理后臺(tái)類的項(xiàng)目,會(huì)遇到底層數(shù)據(jù)是按照一對(duì)多關(guān)系的數(shù)據(jù)表存儲(chǔ)的管理界面。列表頁是一對(duì)多關(guān)系中一對(duì)應(yīng)的數(shù)據(jù)列表,二級(jí)的詳情頁中是一對(duì)多關(guān)系中多對(duì)應(yīng)的多條數(shù)據(jù)展示。通常二級(jí)頁面是能夠增、刪、改數(shù)據(jù)的編輯頁面,在點(diǎn)擊保存提交數(shù)據(jù)后,服務(wù)器端需要插入新增的數(shù)據(jù),刪除要?jiǎng)h除的數(shù)據(jù),更新改變的數(shù)據(jù)。

例如,在汽車電商領(lǐng)域,如果要實(shí)現(xiàn)一輛車型在不同省份有不同的價(jià)格行情,就需要有一個(gè)車價(jià)管理的后臺(tái)管理界面。每輛車對(duì)應(yīng)的詳情界面管理各省價(jià)格行情,增加該車在某個(gè)省份的行情,或者更新某個(gè)省份的行情,或者該車暫時(shí)去除某個(gè)省份的行情等功能,需要服務(wù)器端保證正確地?cái)?shù)據(jù)存儲(chǔ)。

交集:指的是兩個(gè)List對(duì)象中都有的元素。

差集:指的是一個(gè)List對(duì)象中有,而另一個(gè)List對(duì)象中沒有的元素。

轉(zhuǎn)化為一般問題

在車價(jià)管理的車輛詳情頁面點(diǎn)擊保存各省行情按鈕后,請(qǐng)求會(huì)傳送一組數(shù)據(jù)到服務(wù)端,服務(wù)端把這組數(shù)據(jù)保存到一個(gè)List對(duì)象中。然后從數(shù)據(jù)庫中獲取該車型之前的各省行情數(shù)據(jù)并保存到List對(duì)象中,那么怎么找出哪些數(shù)據(jù)是要新增的,哪些數(shù)據(jù)是要?jiǎng)h除的,又有哪些數(shù)據(jù)是要更新的呢?

如果客戶端傳送的數(shù)據(jù)中有的省份行情數(shù)據(jù),而數(shù)據(jù)庫中沒有該省行情數(shù)據(jù)記錄,則這些數(shù)據(jù)是要插入數(shù)據(jù)庫中的。如果客戶端傳送的數(shù)據(jù)有的省份行情數(shù)據(jù),數(shù)據(jù)庫中也有改省的行情數(shù)據(jù),則這些數(shù)據(jù)是要更新的數(shù)據(jù)。如果數(shù)據(jù)庫中有的省份數(shù)據(jù),而客戶端傳送的數(shù)據(jù)中沒有改省份數(shù)據(jù),則這些數(shù)據(jù)是要?jiǎng)h除的。

經(jīng)過上述分析,不難發(fā)現(xiàn)就是找出兩個(gè)List對(duì)象的交集和差集。例如,a為客戶端傳送的數(shù)據(jù)List對(duì)象,b為從數(shù)據(jù)庫中獲取的List對(duì)象。 a中有的元素,而b中沒有的元素就是要插入數(shù)據(jù)庫中的數(shù)據(jù),即a與b的差集。a和b共有的元素就是要更新的數(shù)據(jù),即a與b的交集。b中有的元素,a中沒有的就是要?jiǎng)h除的數(shù)據(jù),即b與a的差集。

程序代碼

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

各省行情類:

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; }}

求兩個(gè)List對(duì)象交集、差集:

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 {//新建的元素,需要設(shè)置相關(guān)成員變量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)); }}

總結(jié)

在開發(fā)過程中,遇到問題要找出問題的一般性,轉(zhuǎn)化概念,理解本質(zhì),方能解決問題。

代碼鏈接: github

以上這篇Java 獲取兩個(gè)List的交集和差集,以及應(yīng)用場(chǎng)景操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本在线不卡视频| 国产精品久久乐| 日韩av有码| 亚洲精品动态| 日韩亚洲精品在线观看| 日韩精品免费观看视频| 一区二区不卡| 日本在线视频一区二区| 欧美日本不卡高清| 国产精品永久| 欧美国产先锋| 久久影院午夜精品| 韩国精品主播一区二区在线观看 | 丝袜美腿亚洲一区二区图片| 麻豆久久精品| 日本在线视频一区二区| 国产日产一区| 国产欧美一区二区三区国产幕精品| 日本麻豆一区二区三区视频| 国产欧美一区二区三区精品观看| 精品欠久久久中文字幕加勒比| 正在播放日韩精品| 亚洲高清二区| 在线精品福利| 免费在线成人| 久久久久午夜电影| 蜜桃伊人久久| 国产精品日本一区二区三区在线| 你懂的国产精品永久在线| 国产成人精品一区二区免费看京 | 日韩三区免费| 国产精品免费看| 日本午夜精品久久久| 欧美激情麻豆| 久久精品91| 亚洲a级精品| 国产一区二区三区不卡av| av亚洲一区二区三区| 一本色道精品久久一区二区三区| 日韩国产欧美在线播放| 国产精品美女在线观看直播| 亚洲涩涩在线| 久久福利精品| 麻豆久久久久久| 国产在线成人| 欧美日韩中出| 三级小说欧洲区亚洲区| 综合一区av| 日产精品一区二区| 亚洲一区av| 成人亚洲一区| 国产亚洲激情| 另类综合日韩欧美亚洲| 欧美理论视频| 国产美女久久| 久久久久国产一区二区| 亚洲资源在线| av资源亚洲| 中文字幕视频精品一区二区三区| 国产一区二区三区四区五区 | 亚洲久草在线| 欧美www视频在线观看| 蜜臀久久99精品久久久久宅男| 国产精品成人自拍| 尤物在线精品| 免费一级欧美片在线观看网站| 红桃视频国产一区| 精品一区二区三区免费看| 99在线精品免费视频九九视| 国产精品天堂蜜av在线播放| 国产综合婷婷| 麻豆精品新av中文字幕| 视频一区中文字幕| 国产精品成人一区二区不卡| 日本亚洲视频在线| 欧美美女一区| 国产盗摄——sm在线视频| 视频一区日韩精品| 极品裸体白嫩激情啪啪国产精品| 久久三级中文| 综合色一区二区| 久久人人88| 福利视频一区| 国产精品日本一区二区不卡视频| 99在线|亚洲一区二区| 亚洲国产福利| 国产欧美一区二区三区米奇 | 午夜国产精品视频| 97国产成人高清在线观看| 亚洲v天堂v手机在线| 欧美在线网站| 久久人人97超碰国产公开结果| 欧美a一区二区| 青青国产精品| 亚洲一区不卡| 午夜欧美理论片| 欧美aa在线观看| 国产精品手机在线播放| 亚欧成人精品| 中文字幕乱码亚洲无线精品一区| 国产在线日韩| 99久久精品国产亚洲精品| 精品高清久久| 国产精品一国产精品k频道56| 婷婷精品在线观看| 蜜臀av一区二区三区| 狠狠久久婷婷| 欧美综合另类| 麻豆精品蜜桃| 成人在线免费观看91| 久久99性xxx老妇胖精品| 97精品久久| 偷拍亚洲精品| 婷婷精品在线| 日本综合视频| 日韩在线成人| 综合亚洲视频| 亚洲一二av| 日韩国产成人精品| 日本欧美久久久久免费播放网| 亚洲精品少妇| 深夜福利亚洲| 91成人在线网站| 国产日韩一区二区三区在线播放 | 亚洲一区成人| 蘑菇福利视频一区播放| 合欧美一区二区三区| 亚洲欧美综合| 黄色精品网站| 日韩精品一区第一页| 性欧美精品高清| 亚洲精品在线二区| 日韩高清一区| 欧美激情福利| 中文字幕人成乱码在线观看| 日韩在线观看不卡| 九一成人免费视频| 伊人久久亚洲热| 99在线|亚洲一区二区| 免费观看在线色综合| 免费人成在线不卡| 日韩国产欧美在线播放| 国产伦理久久久久久妇女| 免费视频一区二区三区在线观看| 精品美女久久| 99精品视频在线观看免费播放| 欧美+亚洲+精品+三区| 国产精品毛片在线| 欧美日一区二区在线观看| 国产成人免费精品| 免费视频亚洲| 综合视频一区| 欧美国产日韩电影| 国产91在线精品| 国产一区亚洲| 亚洲精品在线二区| 麻豆久久一区二区| 久久久蜜桃一区二区人| 亚洲一区二区免费看| 国产欧美一区二区精品久久久| www.51av欧美视频| 亚洲一区成人| 国产精品啊v在线| 中文另类视频| 日韩区一区二| 日韩欧美在线中字| 视频一区二区三区入口| 国产精品国码视频| 日韩久久电影| 日韩精品一二三区| 久久精品一本| 亚洲尤物在线| 久久精品国产99国产| 欧美日韩一区二区综合| 婷婷综合福利| 日韩在线看片| 亚洲欧洲av| a天堂资源在线| 免费在线成人网| 欧美精品1区| 欧美网站在线| 美女免费视频一区| 91成人精品| 欧美亚洲人成在线| 91精品国产福利在线观看麻豆| 综合激情婷婷| 日韩欧美1区| 日韩动漫一区| 久久久影院免费| 国产欧美欧美| 午夜国产一区二区| 久久久久久亚洲精品美女| 亚洲一区二区三区免费在线观看| 欧美a一区二区| 六月婷婷一区| 国产夫妻在线| 91亚洲精品在看在线观看高清| 久久久一二三| 国产欧美88| 久久国产福利|