【问题标题】:creating an array from another array using a loop使用循环从另一个数组创建一个数组
【发布时间】:2015-03-03 19:28:07
【问题描述】:

我正在将一个数组传递到一个带有 if 语句的 for 循环中,我希望将所有评估为 true 的元素添加到一个新数组中。我该怎么做?

【问题讨论】:

  • 有什么问题?
  • 我猜你的 if 是问题所在......用分号结束它们不是得到你想要的东西的正确方法。 if(block[l] == Blocks.air); 删除 ;。除非你真的不希望它们之后的代码运行......有点乱。
  • 维护噩梦...
  • 那还是达不到我最初的目标
  • 那你想要什么?

标签: java arrays loops


【解决方案1】:

假设您有一个对象数组,并且您想创建一个可能更小的数组,其中包含满足某个谓词的元素,您将面临知道创建新数组有多大的问题。您只能通过针对谓词测试每个起始元素来确定这一点,您通常希望避免这样做两次。解决问题的一种方法是使用List 来临时保存您要收集的元素:

MyElementType[] myArray = { /* ... */ };
MyElementType[] result;
List<MyElementType> temp = new ArrayList<MyElementType>();

for (MyElementType element : myArray) {
    if (passesMyTest(element)) {
        temp.add(element);
    }
}

result = temp.toArray(new MyElementType[0]);

当然,直接使用Lists 通常比使用数组更容易,但有时你没有那么奢侈。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2017-05-06
    • 2013-08-21
    • 2012-09-21
    相关资源
    最近更新 更多