摘要:實際需求中如何運用實現過濾重復這里的重復不一定是某個字段一樣的,而且時間點不重疊這里需要校驗不重疊的字段有員工所在部門,出發點,目的點,生效日期,失效日期,出發時點,到達時點,出發分鐘,到達分鐘是需要校驗的對象。
在我們的印象中,Map k,v 映射,一對一的比較多,下面主要講一對多的關系映射,主要需求在于,需要把很多的,雜亂的數據 按照不同的類型進行分類處理,A,B,C類型的數據進行分類統計
比如,計算字母/單詞出現的次數
String str = "t/h/is/is/a/car/a/n/d/t/ha/t/is/tr/uck/a/nd/w/h/e/r/e/is/t/he/s/t/uffs";
String [] str = "t/h/is/is/a/car/a/n/d/t/ha/t/is/tr/uck/a/nd/w/h/e/r/e/is/t/he/s/t/uffs".split("/"); Mapmap = new HashMap (); for(String key:str){ //方法1 //檢查map里面是否存在這個單詞,如果不存在 說明之出現一次 // if(!map.containsKey(key)){ // map.put(key, 1); // }else{ // map.put(key, map.get(key)+1);//存在 就在前面的基礎上面+1 計算出現的次數 // } //方法2 Integer value = map.get(key); if(value == null){ map.put(key, 1); }else{ map.put(key, value+1); } } Set keySet = map.keySet(); Iterator it = keySet.iterator(); while(it.hasNext()){ String key = it.next(); Integer value = map.get(key); System.out.println(key+"-->"+value); } }
當然,這里的value也可以是對象,對于不同的場景 進行靈活的應用。
實際需求中如何運用HashMap實現過濾重復
這里的重復不一定是某個字段一樣的,而且時間點不重疊 這里需要校驗不重疊的字段 有 "員工所在部門","出發點","目的點","生效日期","失效日期","出發時點","到達時點","出發分鐘","到達分鐘"
entity 是需要校驗的對象。
final Map> trfsVo = new HashMap > (); //判斷是否重復 if (entity.getDeptCode()!=null && entity.getBeginDeptCode() != null && entity.getEndDeptCode()!=null && entity.getEffectiveDate() != null && entity.getInvalidDate() != null ) { //三個點重復就繼續判斷時間點是否重疊 String key = StringUtil.append(entity.getDeptCode(),"_",entity.getBeginDeptCode(),"_",entity.getEndDeptCode()); if (trfsVo.containsKey(key)) { List vo = trfsVo.get(key); Calendar now = Calendar.getInstance(); now.set(Calendar.HOUR_OF_DAY, entity.getBeginTimePoint()); now.set(Calendar.MINUTE, entity.getBeginTimeMinute()); long entity_start = now.getTime().getTime(); now.set(Calendar.HOUR_OF_DAY, entity.getEndTimePoint()); now.set(Calendar.MINUTE, entity.getEndTimeMinute()); long entity_end = now.getTime().getTime(); for(TransferNumUnitPrice vor:vo) { //entity代表原來excel里面的數據,vor 從excel里面過濾處理出來有3個code重復的數據 if ( //過濾生效日期在區間范圍重疊 (( (vor.getEffectiveDate().compareTo(entity.getEffectiveDate())!=1) && (vor.getInvalidDate().compareTo(entity.getEffectiveDate())!=-1) ) || //過濾失效日期在區間范圍重疊 ( (vor.getEffectiveDate().compareTo(entity.getInvalidDate())!=1) && (vor.getInvalidDate().compareTo(entity.getInvalidDate())!=-1) ) || //過濾包含重疊 ( (vor.getEffectiveDate().compareTo(entity.getEffectiveDate())==1) && (vor.getInvalidDate().compareTo(entity.getInvalidDate())==-1) )) ) { now.set(Calendar.HOUR_OF_DAY, vor.getBeginTimePoint()); now.set(Calendar.MINUTE, vor.getBeginTimeMinute()); long vorhm_start = now.getTime().getTime(); now.set(Calendar.HOUR_OF_DAY, vor.getEndTimePoint()); now.set(Calendar.MINUTE, vor.getEndTimeMinute()); long vorhm_end = now.getTime().getTime(); if ( //開始時間在區間范圍中 (vorhm_start <= entity_start && vorhm_end >= entity_start) || //結束時間在區間范圍中 (vorhm_start <= entity_end && vorhm_end >= entity_end) || // 時間包含 (vorhm_start > entity_start && vorhm_end < entity_end) ) { //加入異常 比較異常 vo.add(entity); throw new NovatarRuntimeException(getMessageSource().getMessage("transferNumUnitPrice.excelDataConflict")); } } } //加入需要比較的無異常的數據 進行比較 vo.add(entity); } else { List vo = new LinkedList (); vo.add(entity); trfsVo.put(key, vo); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64832.html
摘要:最終能和面試官聊的開心愉快投緣的叫面霸。能夠與很好的集成提供映射標簽,支持對象與數據庫的字段關系映射提供對象關系映射標簽,支持對象關系組件維護。使用可以有效的防止注入,提高系統安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面試,難還是不難?取決于面試者的底蘊(氣場+技能)、心態和認知及溝通技巧。...
摘要:相關閱讀通過項目逐步深入了解一通過項目逐步深入了解二通過項目逐步深入了解三本項目所有代碼及文檔都托管在地址延遲加載什么是延遲加載可以實現高級映射使用實現一對一及一對多映射,具備延遲加載功能。一級緩存是級別的緩存。 相關閱讀: 1、通過項目逐步深入了解Mybatis 2、通過項目逐步深入了解Mybatis 3、通過項目逐步深入了解Mybatis 本項目所有代碼及文檔都托管在 Github...
摘要:單線程集合本部分將重點介紹非線程安全集合。非線程安全集合框架的最新成員是自起推出的。這是標準的單線程陣營中唯一的有序集合。該功能能有效防止運行時造型。檢查個集合之間不存在共同的元素。基于自然排序或找出集合中的最大或最小元素。 【編者按】本文作者為擁有十年金融軟件開發經驗的 Mikhail Vorontsov,文章主要概覽了所有標準 Java 集合類型。文章系國內 ITOM 管理平臺 O...
閱讀 2082·2021-11-02 14:48
閱讀 2760·2019-08-30 14:19
閱讀 2929·2019-08-30 13:19
閱讀 1297·2019-08-29 16:17
閱讀 3230·2019-08-26 14:05
閱讀 2986·2019-08-26 13:58
閱讀 3075·2019-08-23 18:10
閱讀 1105·2019-08-23 18:04