如何通过循环批量添加命名相似的变量到ArrayList,避免逐行操作
解决方法
方案1:数组+循环(最简洁易读)
先把B1到B8的变量值存入int数组,再通过循环遍历数组,批量将元素添加到ArrayList中。同时修正原代码笔误:new ArrList需改为new ArrayList。
修改后的完整代码:
import java.util.ArrayList; class Ejecutar { private int B1 = 0; private int B2 = 2; private int B3 = 3; private int B4 = 8; private int B5 = 9; private int B6 = 11; private int B7 = 12; private int B8 = 17; private ArrayList<Integer> arreglo_posiciones = new ArrayList<Integer>(); public Ejecutar() { } public void cargarArregloPosiciones() { // 把所有变量存入数组 int[] valores = {B1, B2, B3, B4, B5, B6, B7, B8}; // 循环遍历数组,批量添加到集合 for (int valor : valores) { arreglo_posiciones.add(valor); } } }
方案2:直接初始化集合(无需单独循环)
如果需求是一次性初始化集合,可通过IntStream处理基本类型自动装箱问题,直接完成集合初始化:
import java.util.ArrayList; import java.util.stream.IntStream; class Ejecutar { private int B1 = 0; private int B2 = 2; private int B3 = 3; private int B4 = 8; private int B5 = 9; private int B6 = 11; private int B7 = 12; private int B8 = 17; // 直接初始化集合,无需单独调用加载方法 private ArrayList<Integer> arreglo_posiciones = new ArrayList<>(IntStream.of(B1, B2, B3, B4, B5, B6, B7, B8).boxed().toList()); public Ejecutar() { } }
不推荐方案:反射
虽然可以通过反射遍历类字段批量获取值,但代码复杂,且易因字段名变更引发错误,非特殊需求不建议使用。
内容的提问来源于stack exchange,提问作者imnachox2
相关产品推荐
相关产品推荐

