判斷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)文章
使用log4j2打印mybatis的sql執(zhí)行日志方式
這篇文章主要介紹了使用log4j2打印mybatis的sql執(zhí)行日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
java9新特性Collection集合類的增強(qiáng)與優(yōu)化方法示例
這篇文章主要為大家介紹了java9新特性Collection集合類的增強(qiáng)與優(yōu)化方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03
SpringBoot+SpringSecurity處理Ajax登錄請(qǐng)求問題(推薦)
這篇文章主要介紹了SpringBoot+SpringSecurity處理Ajax登錄請(qǐng)求問題,本文給大家介紹的非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12
Java根據(jù)前端傳回的圖片生成pdf并且加密碼和水印
這篇文章主要為大家詳細(xì)介紹了java如何根據(jù)前端傳回的png圖片數(shù)組,后端加水印加密碼生成pdf并返回給前端,感興趣的小伙伴可以參考一下2025-01-01
SpringBoot+MybatisPlus+Mysql+JSP實(shí)戰(zhàn)
這篇文章主要介紹了SpringBoot+MybatisPlus+Mysql+JSP實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

