> 文档中心 > Collection判重,去重,查重简单用法以及CollectionUtils.isEmpty

Collection判重,去重,查重简单用法以及CollectionUtils.isEmpty


1.判重

判断集合中是否有重复元素,则可以利用java的Set集合,Set天生有不重复的buff,因此将入参通过HashSet的构造器转为Set,然后比较Set的size与原集合的size来判断是否含有重复元素。泛型注意重写equals和hashcode方法,实现代码如下:

    /**     * @Description:判断Collection中的元素是否有重复元素     * @param datas     *     需要判断的目标集合     */    public static boolean isRepeatInCollection(Collection<?> datas) { if (datas == null) {// 为空则认为不含重复元素     return false; } if (datas instanceof Set) {//如果是set则不含有重复元素     return false; } Set<?> noRepeatSet = new HashSet<>(datas); return !(datas.size() == noRepeatSet.size());    }

2.去重

去重也是用到了Set无重复buff,直接使用Set实现类的构造方法来完成即可

    /**     * @Description:Collection中去重并将集合转为List     * @param datas     * @return     */    public static <T> List<T> distinct(Collection<T> datas) { if(datas == null){     return new ArrayList<>(); } Set<T> set = new HashSet<>(datas);//使用HashSet构造方法去重 return new ArrayList<>(set);    }

3.查重

找出集合类(这里的集合类指List)中重复元素,查重主要是通过遍历来实现

    /**     * @Description:找出list中的重复数据     * @param datas     * @return     */    public static <T> List<T> findRepeat(Collection<T> datas) { if (datas instanceof Set) {     return new ArrayList<>(); } HashSet<T> set = new HashSet<T>(); List<T> repeatEles = new ArrayList<T>(); for (T t : datas) {     if (set.contains(t)) {  repeatEles.add(t);     } else {  set.add(t);     } } return repeatEles;    }

4.使用

public static void main(String[] args) {    List<Integer> data = new ArrayList<>(Arrays.asList(new Integer[] { 1, 2, 1 }));    System.out.println("Collection{1,2,1}中是否含有重复元素:"+isRepeatInCollection(data));    System.out.println("找出Collection{1,2,1}中的重复元素:"+findRepeat(data));    System.out.println("Collection{1,2,1}去重的结果是"+distinct(data));}//执行结果:Collection{1,2,1}中是否含有重复元素:true找出Collection{1,2,1}中的重复元素:[1]Collection{1,2,1}去重的结果是[1, 2]

在研发过程中,经常要用判断集合(Collection系)是否为空,下面提供工具方法,避免总写list!=null这样的代码

    /**     * @Description:判断所给集合是否为空     * @param      * @param datas     * @return true表示为空     */    public static <T> boolean isEmpty(Collection<T> datas) { return datas == null || datas.isEmpty();    }

CollectionUtils.isEmpty

集合判断:

  例1: 判断集合是否为空:  CollectionUtils.isEmpty(null): true  CollectionUtils.isEmpty(new ArrayList()): true    CollectionUtils.isEmpty({a,b}): false
  例2: 判断集合是否不为空:  CollectionUtils.isNotEmpty(null): false  CollectionUtils.isNotEmpty(new ArrayList()): false  CollectionUtils.isNotEmpty({a,b}): true
import org.springframework.util.CollectionUtils; import java.util.ArrayList;import java.util.List; public class Arraylist {    public   void st(){ List list=new ArrayList(); list.add("helloworld"); list.add("helloworld"); boolean flag = CollectionUtils.isEmpty(list); System.out.println(flag); //结果为false    }}class  p{    public static void main(String[] args) { new Arraylist().st();    }}