【问题标题】:Declaring Multiple Object with Different Names声明具有不同名称的多个对象
【发布时间】:2015-06-29 20:31:19
【问题描述】:

创建的对象数量因用户输入而异,那么如何在 Java 中使用 for 循环声明以下内容?

    MicroStep darkCalibMicro0 = new MicroStep();
    MicroStep darkCalibMicro1 = new MicroStep();
    MicroStep darkCalibMicro2 = new MicroStep();
    MicroStep darkCalibMicro3 = new MicroStep();
    MicroStep darkCalibMicro4 = new MicroStep();
    MicroStep darkCalibMicro5 = new MicroStep();

这些不能硬编码,它们必须根据用户输入的大小生成。

【问题讨论】:

  • 您需要一个列表List<MicroStep> 或一个数组MicroStep[]
  • java 中用于存储项目集合的两个选项是array(用于长度已知且恒定的情况)和ArrayList(用于长度未知或可变的情况)。

标签: java class loops object


【解决方案1】:

好的。在我读错问题后(我的英语不是最好的):

你想做的是ArrayList,你可以这样做:

假设用户输入 40。

Integer userInput = 40;
ArrayList<MicroStep> microStepList = new ArrayList<>();
for (int i = 0; i < userInput; i++) {
microStepList.add(new MicroStep());
}

这样你会得到一个大小为 40 的列表,上面有 40 个 MicroStep。然后,如果您想访问这些对象中的任何一个,您可以这样做:

MicroStep m = microStepList.get(i);

【讨论】:

  • map.put(3, new MicroStep()) 而不是 list.set(3, new MicroStep())array[3] = new MicroStep()?
  • 如果您只需要项目列表而不是键 => 值的关联,HashMap 就太过分了。
  • 好吧,也许吧。他说:“这些不能硬编码,它们必须根据用户输入的大小生成。”,我猜他的意思是用户可以输入 0、500、324 就可以了。
  • @Yayotrón 你可以继续向ArrayList 添加项目:ArrayList&lt;Foo&gt; list = new ArrayList&lt;Foo&gt;(); for( int i = 0; i &lt; input; ++i ) list.Add( new Foo() ); 然后你有input 数量Foos:list.get(0)list.get(input-1)
  • 以上语法终于成功了,谢谢大家的帮助!
【解决方案2】:

@Yayotron 的答案是正确的。这里有一种 Java 8 方法:

List<MicroStep> list = 
    IntStream.range(0, userInput)
    .mapToObj(i -> new MicroStep())
    .collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多