You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何获取表格内符合条件的随机元素并生成新表格?

解决方案:实现随机选直角图形与生成筛选后的集合

没问题,我来帮你搞定这两个需求!核心思路是先把所有符合条件(含直角)的图形筛选到单独集合中,后续的随机选择和新表格生成都基于这个集合操作,会清晰又高效。

第一步:补全必要的类结构(你代码片段缺失的部分)

你的rectangularFigures类需要补充判断直角的标识字段、名称getter方法,这样才能完成筛选和输出:

import java.util.Random;
import java.util.ArrayList;
import java.util.List;

// 注:Java类名规范是大驼峰,建议改成RectangularFigure(单数更符合语义)
public class rectangularFigures {
    private String name;
    private boolean hasRightAngle; // 新增字段:标识该图形是否含直角

    // 构造方法:初始化图形名称和直角属性
    public rectangularFigures(String name, boolean hasRightAngle) {
        this.name = name;
        this.hasRightAngle = hasRightAngle;
    }

    // 获取图形名称的getter方法
    public String getName() {
        return name;
    }

    // 判断是否含直角的方法
    public boolean hasRightAngle() {
        return hasRightAngle;
    }
}

第二步:生成仅含直角图形的新表格

假设你已经有一个存储所有图形的列表,我们先过滤出符合条件的图形(这就是你要的新表格):

public class Main {
    public static void main(String[] args) {
        // 模拟你的原始图形表格(所有图形)
        List<rectangularFigures> allFigures = new ArrayList<>();
        allFigures.add(new rectangularFigures("正方形", true));
        allFigures.add(new rectangularFigures("圆形", false));
        allFigures.add(new rectangularFigures("直角三角形", true));
        allFigures.add(new rectangularFigures("普通平行四边形", false));
        allFigures.add(new rectangularFigures("长方形", true));

        // 需求2:生成仅含直角图形的新表格(筛选后的集合)
        List<rectangularFigures> rightAngleFigures = new ArrayList<>();
        
        // 方式1:普通for循环筛选(兼容所有Java版本)
        for (rectangularFigures figure : allFigures) {
            if (figure.hasRightAngle()) {
                rightAngleFigures.add(figure);
            }
        }

        // 方式2:Java 8+ Stream API(更简洁)
        // 需要导入java.util.stream.Collectors
        // List<rectangularFigures> rightAngleFigures = allFigures.stream()
        //         .filter(rectangularFigures::hasRightAngle)
        //         .collect(Collectors.toList());
    }
}

第三步:随机输出一个符合条件的图形

基于上面筛选好的rightAngleFigures集合,用Random类实现随机选择:

// 在Main方法中继续添加以下代码
Random random = new Random();
// 先判断集合是否为空,避免索引越界异常
if (!rightAngleFigures.isEmpty()) {
    // 生成0到集合大小-1的随机索引
    int randomIndex = random.nextInt(rightAngleFigures.size());
    rectangularFigures randomFigure = rightAngleFigures.get(randomIndex);
    System.out.println("随机选中的含直角图形:" + randomFigure.getName());
} else {
    System.out.println("没有找到任何含直角的图形");
}

你之前用Random没成功的常见原因

大概率是这两个问题:

  • 没有先筛选出符合条件的集合,直接在所有图形里随机后判断,不仅效率低,还可能多次选到不符合的图形;
  • 没有处理筛选后集合为空的情况,调用nextInt(0)会触发IllegalArgumentException异常。

内容的提问来源于stack exchange,提问作者KarolC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:12:34