import org.apache.commons.lang.ObjectUtils;import java.util.*;/*** Created by hurf on 2015/10/12.*/
public class ListMapUtil {/*** 比较数组内容是否相等* @return*/public static boolean compareArray(Object[] ary1,Object[] ary2){List<String> list1 = new ArrayList<String>();List<String> list2 = new ArrayList<String>();for (int i = 0,len1=ary1.length; i <len1 ; i++) {list1.add(ObjectUtils.toString(ary1[i]));}for (int i = 0,len2=ary2.length; i <len2 ; i++) {list2.add(ObjectUtils.toString(ary2[i]));}Object[] as1 = list1.toArray();Object[] as2 = list2.toArray();Arrays.sort(as1);Arrays.sort(as2);return Arrays.equals(as1, as2);}/*** 取出结果集List<Map>中的某一列,组合成数组* @return*/public static String[] getArray(List<Map> result,String columnName){List<String> strList = new ArrayList<String>();for (int i = 0,len = result.size(); i < len; i++) {strList.add(ObjectUtils.toString(result.get(i).get(columnName)));}return (String[])strList.toArray();}/*** 取出结果集List<Map>中的某一列,组合成List<String>* @param result* @param columnName* @return*/public static List<String> getListStr(List<Map> result,String columnName){List<String> strList = new ArrayList<String>();for (int i = 0,len = result.size(); i < len; i++) {strList.add(ObjectUtils.toString(result.get(i).get(columnName)));}return strList;}/*** 内存结果集查询,支持 = 和 IN 查询* @param lm 未处理的结果集* @param conditionColumn 多个查询条件{"KEY1":"VALUE1","KEY2":"VALUE2"}* @return*/public static List<Map> getListMap(List<Map> lm,Map<String,Object> conditionColumn){if(lm.isEmpty()||lm.size()<=0){return lm;}if(conditionColumn.size()==0){return lm;}Map newConMap = new HashMap(conditionColumn);for (String key:conditionColumn.keySet()){List<Map> curList = new ArrayList<Map>();Object value = conditionColumn.get(key);if(value instanceof String){List<Map> mList = getListMap(lm,key,ObjectUtils.toString(value));for (int i = 0,ilen = mList.size(); i < ilen; i++) {curList.add(mList.get(i));}}else if(value instanceof String[]){List<Map> mList = getListMap(lm,key,(String[])value);for (int i = 0,ilen = mList.size(); i < ilen; i++) {curList.add(mList.get(i));}}else if(value instanceof List){List<Map> mList = getListMap(lm,key,(List<String>)value);for (int i = 0,ilen = mList.size(); i < ilen; i++) {curList.add(mList.get(i));}}newConMap.remove(key);getListMap(curList, newConMap);}return lm;}/*** 内存结果集查询,支持不等于号* @param lm* @param conditionColumnName* @param compareStr (数据库字段值 比较 入参)* MORE_THAN :dbValue(数据库值)> conditionColumnValue(入参)* LESS_THAN :dbValue(数据库值)< conditionColumnValue(入参)* MORE_EQUAL:dbValue(数据库值) >= conditionColumnValue(入参)* LESS_EQUAL:dbValue(数据库值) <= conditionColumnValue(入参)* @param conditionColumnValue* @return*/public static List<Map> getListMap(List<Map> lm,String conditionColumnName,String compareStr,String conditionColumnValue){List<Map> strList = new ArrayList<Map>();if(">".equals(compareStr)){for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));if(Double.valueOf(dbValue)>Double.valueOf(conditionColumnValue)){strList.add(map);}}}else if("<".equals(compareStr)){for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));if(Double.valueOf(dbValue)<Double.valueOf(conditionColumnValue)){strList.add(map);}}}else if("<=".equals(compareStr)){for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));if(Double.valueOf(dbValue) <= Double.valueOf(conditionColumnValue)){strList.add(map);}}}else if(">=".equals(compareStr)){for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));if(Double.valueOf(dbValue) >= Double.valueOf(conditionColumnValue)){strList.add(map);}}}return strList;}/*** 根据条件字段获取 指定结果集 中的符合条件的行 (只支持单个条件)* @param lm* @param conditionColumnName* @return*/public static List<Map> getListMap(List<Map> lm,String conditionColumnName,String conditionColumnValue){List<Map> strList = new ArrayList<Map>();for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName)).trim();//结果集中的实际值if(dbValue.equals(conditionColumnValue)){strList.add(map);}}return strList;}/*** 根据对应字段,获取所有变更的一条记录* @param lm* @param conditionColumnName* @param conditionColumnValue* @return*/public static Map getPutAllMap(List<Map> lm,String conditionColumnName,String conditionColumnValue){Map putAllMap = new HashMap();for (int i = 0,len = lm.size(); i < len; i++) {Map map = lm.get(i);String dbValue = ObjectUtils.toString(map.get(conditionColumnName)).trim();//结果集中的实际值if(dbValue.equals(conditionColumnValue)){putAllMap.putAll(map);}}return putAllMap;}/*** 支持 IN查询* @param lm* @param conditionColumnName* @param conditionColumnValues String[]* @return*/public static List<Map> getListMap(List<Map> lm,String conditionColumnName,String[] conditionColumnValues){List<Map> strList = new ArrayList<Map>();for (int i = 0,clen = conditionColumnValues.length; i < clen; i++) {for (int j = 0,len = lm.size(); j < len; j++) {Map map = lm.get(j);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));//结果集中的实际值if(dbValue.equals(conditionColumnValues[i])){strList.add(map);}}}return strList;}/*** 支持 IN查询* @param lm* @param conditionColumnName* @param conditionColumnValues List<String>* @return*/public static List<Map> getListMap(List<Map> lm,String conditionColumnName,List<String> conditionColumnValues){List<Map> strList = new ArrayList<Map>();for (int i = 0,clen = conditionColumnValues.size(); i < clen; i++) {for (int j = 0,len = lm.size(); j < len; j++) {Map map = lm.get(j);String dbValue = ObjectUtils.toString(map.get(conditionColumnName));//结果集中的实际值if(dbValue.equals(conditionColumnValues.get(i))){strList.add(map);}}}return strList;}/*** 去重:根据指定唯一字段去重(指定的字段就是 类似主键字段)* @param duListMap* @param keys* @return 调用实例:deleteDuplicate(duListMap,"BIZ_SNO"); //删除结果集中BIZ_SNO是重复的Map*/public static List<Map> deleteDuplicate(List<Map> duListMap,String... keys){int keyLen = keys.length;if(keyLen==1){//只考虑一个Key为唯一字段的情况String firstKey = ObjectUtils.toString(keys[0]);for (int i = 0,len=duListMap.size(); i < len; i++) {for ( int j= len-1; j > i; j-- ) {if (compareByKey(duListMap, firstKey, i, j)) {duListMap.remove(j);}}}}else{//比较所有指定的Key的值,相当于联合主键for (int ki = 0; ki < keyLen; ki++) {String key = ObjectUtils.toString(keys[ki]);for (int i = 0,len=duListMap.size(); i < len; i++) {for ( int j= len-1; j > i; j-- ) {if (compareByKey(duListMap, key, i, j)) {duListMap.remove(j);}}}}}return duListMap;}private static boolean compareByKey(List<Map> duListMap, String firstKey, int i, int j) {return ObjectUtils.toString(duListMap.get(j).get(firstKey)).equals(ObjectUtils.toString(duListMap.get(i).get(firstKey)));}/*** 合并List<Map> 结果集* @param listMaps* @return*/public static List<Map> mergeListMap(List<Map> ...listMaps){List<Map> rsListMap = new ArrayList<Map>();for (List<Map> listMap:listMaps){for (Map m:listMap){rsListMap.add(m);}}return rsListMap;}/*** 将两个结果集用一个关联字段进行关联,形成一个新的结果集(以第一个结果集为主)* @param baseList* @param relList* @param col*/public static List<Map> mergeListMapsByCol(List<Map> baseList, List<Map> relList, String col) {List<Map> rlist = new ArrayList<Map>();for (Map bMap:baseList) {String colVal = ObjectUtils.toString(bMap.get(col));boolean addFlag = true;for (Map rMap:relList) {if(ObjectUtils.toString(rMap.get(col)).equals(colVal)){rMap.putAll(bMap);rlist.add(rMap);rMap.put("REGISTER_NO",ObjectUtils.toString(rMap.get("BUSINESS_LICENCE_NO")));rMap.put("REGISTER_TYPE","1");rMap.put("COUNTRY_REVENUE",ObjectUtils.toString(rMap.get("BUSINESS_TAX_NO")));rMap.put("COUNTRY_REVENUE_EXP",ObjectUtils.toString(rMap.get("TAX_NO_EXP_DATE")));rMap.put("ORG_CODE",ObjectUtils.toString(rMap.get("ORG_ID_CODE")));rMap.put("ORG_CODE_EXPDATE",ObjectUtils.toString(rMap.get("ORG_ID_EXP_DATE")));addFlag = false;}}if(addFlag){rlist.add(bMap);}}return rlist;}}
详细解决方案
JAVA ListMap结果集处理方法集合
热度:65 发布时间:2023-09-30 02:16:28.0
相关解决方案
- java 乱码 汉字是 ? 如何转换成汉字
- java web 登录次数限制,该如何解决
- java 工商银行网银支付 B2B的 都亟需什么,需要注意什么
- Java Applet程序从JDK6升级到7时遇到的有关问题
- java web 视频相干
- java 系统单点登录解决方案
- java 获取客户端IP解决办法
- JAVA 后台怎么获得前台页面FCKedit编辑器中的内容以及内容的样式
- java 正则化匹配有关问题
- JAVA WEB导航条,该怎么处理
- java 中Node 有关问题
- 吐了,java Timer 终止不了。
- java web开发解决办法
- 关于 java cast 有关问题,你明白不
- java ftp 下传和上载乱码有关问题
- java web项目上的一些文件
- Hibernate操作数据库 报错java.lang.Integer cannot be cast to java.lang.String如何改
- java struts 文件上载
- java web baidu map开发
- JAVA WEB导航条解决办法
- java 编写ftp上载
- java web中的一个有关问题,困扰小弟我很久了
- java web 与tomcat解决办法
- java web基于j2ee的一些有关问题
- java 内网外网的一个需求,该怎么处理
- jsp 页面 安插ArrayList 报错。为什么,已经加了import="java.util."了呀!
- java dwg 怎样用java把dwg便是aoutcad的格式文件转换成gif,jpg等格式
- 求《Java Web 程序设计与项目实践》解决办法
- java webservice解决方法
- java 与jsp,该怎么解决