千家信息网

如何实现Java List不重复抽取Util

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,本篇内容主要讲解"如何实现Java List不重复抽取Util",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何实现Java List不重复抽取Util"
千家信息网最后更新 2025年11月12日如何实现Java List不重复抽取Util

本篇内容主要讲解"如何实现Java List不重复抽取Util",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何实现Java List不重复抽取Util"吧!

import java.util.ArrayList;import java.util.List;import java.util.Random;/** * @Author: wuyiqi * @Date: 2021-03-16 10:17 * @Description: 万能list抽取不重复 */public class ExtractUtil{   /**    * 批量抽取    * @param size 抽取数量    * @param records 抽取的列表    * @param  类型    * @return    */   public static  List extractList(int size, List records)   {      int total = records.size();      if (total < 1 || size < 1)      {         return null;      }      if (size >= total)      {         return records;      }      // 如果抽取的百分比大于50%,那就抽取不需要的,再反转      boolean reverse = false;      if ((double) size / total > 0.5)      {         reverse = true;         size = total - size;      }      // 抽取核心方法      List list = new ArrayList<>();      for (int i = 0; i < size; i++)      {         int random = new Random().nextInt(total);         T t = extract(random, list, records);         if (null != t)         {            list.add(t);         }      }      // 如果反转      if (reverse)      {         List temp = new ArrayList<>();         for (T record : records)         {if (!list.contains(record))            {               temp.add(record);            }         }         list = temp;      }      return list;   }   /**    * 单个抽取;不重复抽取    * @param index 抽取位置    * @param newList 抽中的列表    * @param records 抽取的列表    * @param  类型    * @return    */   public static  T extract(int index, List newList, List records)   {      int total = records.size();      if (total < 1 || index >= total)      {         return null;      }      T t = records.get(index);      if (newList.contains(t))      {         t = extract(new Random().nextInt(total), newList, records);      }      return t;   }}

到此,相信大家对"如何实现Java List不重复抽取Util"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0