判斷List和Map是否相等并合并List中相同的Map
更新時間:2018年12月11日 08:56:45 作者:執(zhí)筆記憶的空白
今天小編就為大家分享一篇關(guān)于判斷List和Map是否相等并合并List中相同的Map,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
List、Set、Map判斷兩個對象相等的標(biāo)準(zhǔn)
- List:通過equals()方法比較返回true即可。
- HashSet:先比較兩個對象hashCode()方法返回的值是否相等,如果不相等就認(rèn)為兩個對象是不相等的,如果兩個對象的hashCode相等就繼續(xù)調(diào)用equals()方法進(jìn)一步判斷兩個對象是否相等,如果equals()方法返回true認(rèn)為兩個對象相等,返回false認(rèn)為兩個對象不相等。
- TreeSet:兩個對象通過compareTo(Object obj)方法比較是否返回0:如果返回0,則認(rèn)為相等,否則不相等。
- HashMap、HashTable:(1)兩個key通過equals()方法比較返回true,兩個key的hashCode值也相等;(2)value與另外一個對象通過equals()方法比較返回true即可。
- TreeMap:兩個key值通過compareTo()方法返回0,TreeMap即認(rèn)為這兩個key是相等的。
/**
* 根據(jù)特定規(guī)格,判斷兩個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>
* 如果找到則返回這個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é)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
您可能感興趣的文章:
- Json字符串與Object、List、Map的互轉(zhuǎn)工具類
- Java中List根據(jù)map的某個key去重的代碼
- 在Java 8中將List轉(zhuǎn)換為Map對象方法
- Java三種方法將List轉(zhuǎn)換為Map的實例
- Java集合定義與用法實例總結(jié)【Set、List與Map】
- Java中對list map根據(jù)map某個key值進(jìn)行排序的方法
- 將List集合中的map對象轉(zhuǎn)為List<對象>形式實例代碼
- java中快速創(chuàng)建帶初始值的List和Map實例
- 詳解 Spring注解的(List&Map)特殊注入功能
- 詳解Java中l(wèi)ist,set,map的遍歷與增強(qiáng)for循環(huán)
相關(guān)文章
Maven?pom.xml文件獲取當(dāng)前時間戳方式
這篇文章主要介紹了Maven?pom.xml文件獲取當(dāng)前時間戳方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
Java基礎(chǔ)學(xué)習(xí)之運(yùn)算符相關(guān)知識總結(jié)
今天帶大家復(fù)習(xí)Java基礎(chǔ)知識,文中對Java運(yùn)算符相關(guān)知識作了詳細(xì)總結(jié),對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
使用BeanFactory實現(xiàn)創(chuàng)建對象
這篇文章主要為大家詳細(xì)介紹了使用BeanFactory實現(xiàn)創(chuàng)建對象,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08

