当前位置: 首页 > news >正文

《Java 实用技巧:均匀取元素算法(支持不足补齐)》

📰 概要/摘要示例

在日常开发中,我们经常需要从多个列表中均匀抽取一定数量的元素。例如从多个数据源、分批任务队列中获取一定数量的任务。

本文介绍了一种 简洁高效的 Java 实现:通过轮询的方式从每个 List 中依次取元素,当某个列表取完后自动跳过,直到总共取满指定数量 N 个元素为止。

代码不到 20 行,逻辑清晰,无需随机数或复杂分配算法,非常适合在业务层快速实现“均匀取数”“多源任务分配”等需求。

简单、顺序均匀取元素的版本
要求:

  • 从多个 List 中取 总共 N 个元素

  • 每个 list 先取 1 个,按顺序轮流取;

  • 如果不够 N,就继续从头循环取;

  • 某个 list 没元素了,就跳过它。

⚙️ 特点

✅ 均匀轮流取
✅ 自动跳过取空的 list
✅ 自动补齐直到 N 或所有元素取完
✅ 简洁清晰、无随机

✅ 简化版 Java 实现(无随机)

import java.util.*;public class EvenPicker {public static <T> List<T> pickEvenly(List<List<T>> lists, int N) {List<T> result = new ArrayList<>();int[] indexes = new int[lists.size()]; // 每个list当前取到的位置while (result.size() < N) {boolean allEmpty = true;for (int i = 0; i < lists.size(); i++) {List<T> lst = lists.get(i);if (indexes[i] < lst.size()) {result.add(lst.get(indexes[i]));indexes[i]++;allEmpty = false;if (result.size() >= N) break;}}if (allEmpty) break; // 所有list都取完了}return result;}public static void main(String[] args) {List<List<Integer>> lists = Arrays.asList(Arrays.asList(1, 2, 3),Arrays.asList(10, 11, 12, 13),Arrays.asList(20, 21));List<Integer> result = pickEvenly(lists, 10);System.out.println(result);}
}

🔍 输出示例

[1, 10, 20, 2, 11, 21, 3, 12, 13]

http://www.dtcms.com/a/536576.html

相关文章:

  • 【Linux】nohup命令
  • 泰州网站建设案例昆明网站seo外包
  • 【成长纪实】星光不负 码向未来|我的 HarmonyOS 学习之路与社区成长故事
  • 网站服务器租用4t多少钱一年啊提供网站建设公司有哪些
  • 如何处理系统环境变量的字符长度超过了 Windows 对话框的限制(2047 个字符)
  • 快速上手大模型:深度学习1(初识、神经网络基础)
  • Java---StringBuffer类
  • 【从零开始构建性能测试体系-10】人工智能与性能测试:如何借助AI提升测试效率
  • 网站建设人员要与客户谈什么一篇关于大学网站建设与管理的论文
  • 子洲网站建设制作网站上做网页怎么改图片
  • kafka使用-Producer
  • CUDA实现的点云MLS滤波
  • Spring Framework源码解析——TaskScheduler
  • 【从零开始开发远程桌面连接控制工具】02-服务端实现详解
  • 湖州网站设计公司WordPress博客Vieu主题
  • 国外好看的网站设计国外网站需要备案
  • 福克斯特solo4 2i2 Focusrite solo4 2i2 录制音乐 全民K歌单声道问题
  • 《信息系统项目管理师》案例分析题及解析模拟题8
  • MCU中的HSE(高速外部时钟,High-Speed External)
  • 开发中的英语积累 P9:Dispatch、Multi、Retain、Restore、Yield、Interrupt
  • ViT算法流程——从 原始像素 → 网络输出 logits 的 每一步张量形状、公式、关键代码
  • 前端与移动开发之 CSS vs QSS
  • 上那个网站找手工活做网上项目外包
  • 网站建设项目开发响应式学校网站模板下载
  • CICD之git
  • 零基础从头教学Linux(Day 57)
  • 综合网站推广的含义天津网站建设如何
  • Playwright中Browser的实现类深度解析-Browser方法速查手册
  • 智能指针完全指南
  • 数字阵列雷达(三)——系统工作原理(接收)