开发:随笔记录之 判断list和map相等,并合并等问题

2020-12-25 11:38:56 浏览数 (1)

代码语言:javascript复制
 /** 
   * 根据特定规格,判断两个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; 
   } 

0 人点赞