判斷List和Map是否相等并合并List中相同的Map
List、Set、Map判斷兩個(gè)對(duì)象相等的標(biāo)準(zhǔn)
- List:通過equals()方法比較返回true即可。
- HashSet:先比較兩個(gè)對(duì)象hashCode()方法返回的值是否相等,如果不相等就認(rèn)為兩個(gè)對(duì)象是不相等的,如果兩個(gè)對(duì)象的hashCode相等就繼續(xù)調(diào)用equals()方法進(jìn)一步判斷兩個(gè)對(duì)象是否相等,如果equals()方法返回true認(rèn)為兩個(gè)對(duì)象相等,返回false認(rèn)為兩個(gè)對(duì)象不相等。
- TreeSet:兩個(gè)對(duì)象通過compareTo(Object obj)方法比較是否返回0:如果返回0,則認(rèn)為相等,否則不相等。
- HashMap、HashTable:(1)兩個(gè)key通過equals()方法比較返回true,兩個(gè)key的hashCode值也相等;(2)value與另外一個(gè)對(duì)象通過equals()方法比較返回true即可。
- TreeMap:兩個(gè)key值通過compareTo()方法返回0,TreeMap即認(rèn)為這兩個(gè)key是相等的。
/** * 根據(jù)特定規(guī)格,判斷兩個(gè)Map是否相等 */ private static boolean isEquals(Map<String, String> src, Map<String, String> dest, String[] samekey) { boolean equals = true; StringBuffer sbf_src = new StringBuffer(); StringBuffer sbf_dest = new StringBuffer(); for (int i = 0; i < samekey.length; i++) { sbf_src.append(src.get(samekey[i])); sbf_dest.append(dest.get(samekey[i])); } if (sbf_src.toString().equals(sbf_dest.toString())) { equals = true; } else { equals = false; } return equals; } /** * 獲得list中有沒有相同的keyMap(待需找的map)<br> * 如果找到則返回這個(gè)list和keyMap相同Map的下標(biāo),否則返回-1 */ private static int getEqualsMap(List<Map<String, String>> list, Map<String, String> keyMap, String[] samekey) { int equalsIndex = -1; for (int i = 0; i < list.size(); i++) { Map<String, String> tempMap = list.get(i); if (isEquals(tempMap, keyMap, samekey)) { equalsIndex = i; } } return equalsIndex; } /** * 合并List中相同的Map * @param list * @return */ public static List<Map<String, String>> combineList(List<Map<String, String>> list, String[] samekey,String combinekey) { List<Map<String, String>> retList = new ArrayList<Map<String, String>>(); for (int i = 0; i < list.size(); i++) { Map<String, String> tempMap = list.get(i); int equalsIndex = getEqualsMap(retList, tempMap, samekey); if (-1 == equalsIndex) { retList.add(tempMap); } else { String custSrc = retList.get(equalsIndex).get(combinekey); int custSrcInt = Integer.parseInt(custSrc.substring(0, custSrc.length() - 1)); String custTemp = tempMap.get(combinekey); int custTempInt = Integer.parseInt(custTemp.substring(0, custTemp.length() - 1)); String destCust = (custSrcInt + custTempInt) + custSrc.substring(custSrc.length() - 1); retList.get(equalsIndex).put(combinekey, destCust); } } return retList; }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- Json字符串與Object、List、Map的互轉(zhuǎn)工具類
- Java中List根據(jù)map的某個(gè)key去重的代碼
- 在Java 8中將List轉(zhuǎn)換為Map對(duì)象方法
- Java三種方法將List轉(zhuǎn)換為Map的實(shí)例
- Java集合定義與用法實(shí)例總結(jié)【Set、List與Map】
- Java中對(duì)list map根據(jù)map某個(gè)key值進(jìn)行排序的方法
- 將List集合中的map對(duì)象轉(zhuǎn)為L(zhǎng)ist<對(duì)象>形式實(shí)例代碼
- java中快速創(chuàng)建帶初始值的List和Map實(shí)例
- 詳解 Spring注解的(List&Map)特殊注入功能
- 詳解Java中l(wèi)ist,set,map的遍歷與增強(qiáng)for循環(huán)
相關(guān)文章
java Date獲取年月日時(shí)分秒的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猨ava Date獲取年月日時(shí)分秒的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06Maven?pom.xml文件獲取當(dāng)前時(shí)間戳方式
這篇文章主要介紹了Maven?pom.xml文件獲取當(dāng)前時(shí)間戳方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12Java基礎(chǔ)學(xué)習(xí)之運(yùn)算符相關(guān)知識(shí)總結(jié)
今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文中對(duì)Java運(yùn)算符相關(guān)知識(shí)作了詳細(xì)總結(jié),對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05使用BeanFactory實(shí)現(xiàn)創(chuàng)建對(duì)象
這篇文章主要為大家詳細(xì)介紹了使用BeanFactory實(shí)現(xiàn)創(chuàng)建對(duì)象,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08