首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在解析数组时将数组中的对象作为方法的参数?

如何在解析数组时将数组中的对象作为方法的参数?
EN

Stack Overflow用户
提问于 2014-10-26 21:30:26
回答 3查看 46关注 0票数 1

我对Java和一般编程都很陌生。我现时面对的问题如下:

我有一个由5个对象组成的数组。这5个对象中有2个具有特定的属性,我希望将这2个对象作为方法的参数发送。在解析具有该属性的项的数组后,是否有可能将这些项作为参数放到函数中,而不将它们复制到辅助变量中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-26 21:41:57

如果您不知道有多少对象将满足您的条件,您将不知道有多少对象需要传递到一个新函数中。因此,我建议您的函数(如果还没有)接受ArrayList。

您可以做的是循环遍历数组以查找符合条件的项,然后将它们添加到ArrayList中。完成后,可以将该数组列表传递给您的函数。下面是一个代码片段,它假设数组是字符串变量:

代码语言:javascript
复制
ArrayList<String> tmpList = new ArrayList<String>();

for(int i = 0; i < myArray.Length; i++){
   if(myArray[i].contains("Something."){ // Use whatever criteria you need here.
      tmpList.Add(myArray[i]);
   }
}

myFunction(tmpList);

我认为这是最好的办法。ArrayLists是无界的,因此您可以向其添加未知数量的项。

例如,您在问题中说,您有一个由5个项组成的数组,其中两个项可能需要传递到函数中。如果总是这样,您可以定义一个长度为2的数组来存储这些项,或者可以将您的函数设计为有2个输入。

但是,当您需要传递3项时会发生什么呢?您的函数可能不会被设计为接受3项。或者,您已经将数组定义为长度2,所以不能给它第三项。如果您使用ArrayList,您将有这种灵活性向前迈进。

票数 0
EN

Stack Overflow用户

发布于 2014-10-26 21:33:38

如果我理解你的问题,那你就不能这么做,但你不应该这么做。

“复制”它们到其他变量是正确的事情,但你的术语是错误的。您可以创建两个变量references,该变量指向具有所需属性的这两个特定对象,然后将这些引用传递给方法。这不会复制对象的任何内容,它只是创建一个指向同一个实例的命名reference

或者,您可以考虑将整个数组传递到方法中,并让该方法确定它将从数组中使用哪些对象,但这是一个设计决策,如果要这样做,应该有一个坚实的基础。

票数 0
EN

Stack Overflow用户

发布于 2014-10-26 21:40:59

我想数组的大小和要拾取的对象的数量在编译时是未知的,否则您就可以声明一个带有2个参数的函数,并像往常一样调用它。

因此,答案是“否”,您必须使用另一个数组,或者更简单地使用一个java列表:

代码语言:javascript
复制
List<MyObj> pickedOnes = new ArrayList<MyObj>(yourArray.length); //create an array-backed list
for (MyObj obj: yourArray) {
    if (isToPick(obj)) {//checking your condition on whether to pick up the object
         pickedOnes.add(obj);
    }
}
yourFunction(pickedOnes); //call it with List<MyObj>

请注意,Java实际上并不复制MyObj对象,它只复制对它的引用,这非常快速,而且成本可以忽略不计。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26578190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档