判断List和Map是否相等并合并List中相同的Map
作者:执笔记忆的空白 发布时间:2022-12-29 02:11:10
标签:list,map,相等,合并
List、Set、Map判断两个对象相等的标准
List:通过equals()方法比较返回true即可。
HashSet:先比较两个对象hashCode()方法返回的值是否相等,如果不相等就认为两个对象是不相等的,如果两个对象的hashCode相等就继续调用equals()方法进一步判断两个对象是否相等,如果equals()方法返回true认为两个对象相等,返回false认为两个对象不相等。
TreeSet:两个对象通过compareTo(Object obj)方法比较是否返回0:如果返回0,则认为相等,否则不相等。
HashMap、HashTable:(1)两个key通过equals()方法比较返回true,两个key的hashCode值也相等;(2)value与另外一个对象通过equals()方法比较返回true即可。
TreeMap:两个key值通过compareTo()方法返回0,TreeMap即认为这两个key是相等的。
/**
* 根据特定规格,判断两个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的下标,否则返回-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;
}
来源:https://blog.csdn.net/moneyshi/article/details/41081313


猜你喜欢
- 首先定义两个示例类ClassA,ClassB,用于后续的示例演示package cn.lzrabbit;public class Class
- 先说下这个demo,这是一个模仿课程表的布局文件,虽然我是个菜鸟,但我还是想留给学习的人一些例子,先看下效果 然后再来看一下我们学
- 假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,
- RabbitMQ主要有六种种工作模式,本文整合SpringBoot分别介绍工作模式的实现。前提概念生产者消息生产者或者发送者,使用P表示:队
- 前两天,谷歌发布了Android Studio 1.0的正式版,也有更多的人开始迁移到Android Studio进行开发。然而,网上很多的
- 在任何的生产环境中我们都不可逃避并发这个问题,多线程作为并发问题的技术支持让我们不得不去了解。这一块知识就像一个大蛋糕一样等着我们去分享,抱
- 一.什么是maven?Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一
- 首先来看一下工具StringUtils的判断方法:一种是org.apache.commons.lang3包下的;另一种是org.spring
- Android Notification 使用方法详解用TaskStackBuilder来获取PendingIntent处理点击跳转到别的A
- 前言之前一篇文章介绍了基本的统一异常处理思路: Spring MVC/Boot 统一异常处理最佳实践.上篇文章也有许多人提出了一些问题:如何
- Java8实现菜单树形数据当我们打开京东商城时,左侧的菜单依次分为 * 展示,这是如何实现的呢?本篇暂不讲述前端,只讲述如何使用java8 的
- 本文实例讲述了Java实现的RSA加密解密算法。分享给大家供大家参考,具体如下:import java.awt.AlphaComposite
- 根据用户系统时区动态展示时间当我们使用SpringBoot+Mysql开发系统时,总是统一设置UTC+8时区,这样用户在任何地区访问系统,展
- 现在的智能手机不敢说百分百的都是触摸屏,也应该是百分之九九以上为触摸屏了,触摸屏为我们操作无键盘、无鼠标的手机系统带来了很多的便利。当用户触
- java获取文件的inode标识符,如果文件被删除或者重命名,inode的值会发生变更,因此可以在第一次加载File之后记录inode,后续
- 跑马灯被运用在很多领域, 例如商场的电子条幅、大楼的宣传广告位、地铁的广告位.不过毫无疑问的是它们都是为了解决文字过长的问题而应景给出的一种
- 找了很久查询objectid的方法都是错的,用mongovue能查询出来,但就是用java不知道怎么查询1.mongovue里的查询方式:{
- 一. 简介 俩个数据库db1,db2, db1数据库的map
- public class MyGestureLintener extends SimpleOnGestureListener {privat
- 网上关于下拉刷新的文章也不少,不过都太长了。恰好发现了官方的下拉刷新库,而且效果还是不错的,简洁美观,用得也挺方便。下面是效果图:我的好友原