集合操作

package com.ad.web.servlet.common;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;


public class CollectionUtil
{
   /**      * 不允许实例化      */     private CollectionUtil() {     }     /**      *  获取两个集合的不同元素      * @param collmax      * @param collmin      * @return      */
    @SuppressWarnings("unchecked")
public static Collection getDiffent(Collection collmax,Collection collmin){
        //使用LinkeList防止差异过大时,元素拷贝         Collection csReturn = new LinkedList();         Collection max = collmax;         Collection min = collmin;         //先比较大小,这样会减少后续map的if判断次数         if(collmax.size()<collmin.size())         {             max = collmin;             min = collmax;         }
        //直接指定大小,防止再散列         Map<Object,Integer> map = new HashMap<Object,Integer>(max.size());         for (Object object : max) {             map.put(object, 1);         }
        for (Object object : min) {             if(map.get(object)==null)             {                 csReturn.add(object);             }else{                 map.put(object, 2);             }         }         for (Map.Entry<Object, Integer> entry : map.entrySet()) {             if(entry.getValue()==1)             {                 csReturn.add(entry.getKey());             }         }         return csReturn;     }         /**      *  获取两个集合的相同元素      * @param collmax      * @param collmin      * @return      */     @SuppressWarnings("unchecked")
public static Collection getSame(Collection collmax,Collection collmin){         //使用LinkeList防止差异过大时,元素拷贝        Collection csReturn = new LinkedList();         Collection max = collmax;         Collection min = collmin;         //先比较大小,这样会减少后续map的if判断次数         if(collmax.size()<collmin.size())         {             max = collmin;             min = collmax;         }         //直接指定大小,防止再散列         Map<Object,Integer> map = new HashMap<Object,Integer>(max.size());         for (Object object : max) {             map.put(object, 1);         }         for (Object object : min) {             if(map.get(object)!=null)             {                 csReturn.add(object);             }         }         return csReturn;     } }

posted @ 2016-11-02 18:05  albert_think  阅读(169)  评论(0编辑  收藏  举报