Java:如何创建存储无重复数字组的多索引唯一ArrayList
实现6组无重复数字集合的方案
嘿,我来帮你搞定这个需求!咱们用Java来实现,完全贴合你说的要求——用for语句生成每组数字,把每组放进ArrayList,再把这些小列表存到外层的ArrayList里,同时保证组内无重复、各组之间没有完全重复的整体。
核心思路
- 组内数字唯一:每组生成6个数字时,每次生成后检查是否已经在当前组里,确保不重复;
- 组间无整体重复:每生成一组后,检查外层列表里是否已经存在完全一样的组,只有不存在时才添加进去;
- 用
for循环控制数量:不管是生成每组的6个数字,还是凑够6组,都用for来把控流程。
完整代码实现
import java.util.ArrayList; import java.util.Random; public class UniqueNumberGroups { public static void main(String[] args) { // 外层列表,存储6组数字 ArrayList<ArrayList<Integer>> allGroups = new ArrayList<>(); Random random = new Random(); int minNum = 1; // 数字范围最小值,可自行调整 int maxNum = 49; // 数字范围最大值,可自行调整 int groupCount = 6; // 要生成的组数 int numPerGroup = 6; // 每组的数字个数 // 生成6组不重复的数字集合 for (int i = 0; i < groupCount; ) { ArrayList<Integer> currentGroup = new ArrayList<>(); // 生成当前组的6个不重复数字 for (int j = 0; j < numPerGroup; ) { int num = random.nextInt(maxNum - minNum + 1) + minNum; // 如果当前组没有这个数字,就添加进去,同时j自增 if (!currentGroup.contains(num)) { currentGroup.add(num); j++; } } // 检查当前组是否已经在外层列表中,不存在才添加,同时i自增 if (!allGroups.contains(currentGroup)) { allGroups.add(currentGroup); i++; } } // 打印结果验证 for (int k = 0; k < allGroups.size(); k++) { System.out.println("第" + (k+1) + "组:" + allGroups.get(k)); } } }
关键细节解释
- 组内去重:在生成每组数字的
for循环里,每次生成随机数后用currentGroup.contains(num)检查,只有不在组里的数字才会被添加,确保组内6个数字完全唯一; - 组间整体去重:
allGroups.contains(currentGroup)会调用ArrayList的equals方法,逐个比较两个列表的元素是否完全一致,这样就能避免添加重复的组; - 灵活调整范围:代码里的
minNum和maxNum可以随便改,比如你想生成0-99的数字,直接调整这两个值就行; for循环的小技巧:这里的for循环没有在括号里写自增,而是在满足条件时才自增,这样就能确保只有生成有效组(不重复的组)时,才会推进组数的计数。
运行这段代码,你就能得到6组完全符合要求的数字集合啦!
内容的提问来源于stack exchange,提问作者Aueiorl
相关产品推荐
相关产品推荐

