天天看點

處理數組中重複的資料

    private static void updNameRepeatOptVal(String[] colKeys){

     //找出相同的選項 key為字元串, value為次數, value>1就說明有相同的選項值,要做處理

  Map<String,Integer>  repeatKeyMap = new HashMap<String,Integer>();

  for(int i=0; i<colKeys.length; i++){

   if(repeatKeyMap.get(colKeys[i])==null){

    repeatKeyMap.put(colKeys[i], new Integer(1));

   }else{

    repeatKeyMap.put(colKeys[i], new Integer(repeatKeyMap.get(colKeys[i]).intValue()+1));

   }       

  }

  //找出重複的key,并放到list中

  List<String> repeatKeyList = new ArrayList<String>();

  Iterator it = repeatKeyMap.entrySet().iterator();

  while (it.hasNext()) {

      Map.Entry entry = (Map.Entry)it.next();

      String key = (String)entry.getKey();

      Integer value = (Integer)entry.getValue();

      if(value!=null){

       if(value.intValue()>1){

        repeatKeyList.add(key);

       }

      }

  }

  //對重複的key進行處理(改名)

  for(int i=0; i<repeatKeyList.size(); i++){

   int cnt = 0;

   //記錄重複位置的下标

   Map<String,Integer> postMap = new HashMap<String,Integer>();

   for(int j=0;j<colKeys.length; j++){

    if(repeatKeyList.get(i).equals(colKeys[j])){         

     postMap.put(""+cnt, j);

     cnt++;

    }

   }

   //修改名稱

   for(int k=0; k<cnt; k++){

    Integer post = postMap.get(k+"");

    colKeys[post.intValue()] = colKeys[post.intValue()]+"["+k+"]";

   }

  }

    }