Java:在方法

时间:2016-03-08 03:08:46

标签: java oop arraylist composition

比如说,我有一个array Object我将在辅助方法中迭代;在帮助函数中,我将提取并处理相关/重要信息并将其添加到ArrayList

我的问题如下:

问题一

最好将新创建的ArrayList作为参数/参数传递并直接在辅助函数中更新 OR 是否最好在...中创建ArrayList辅助函数,然后将其返回给我的主函数进行赋值?无论哪种方式,它的工作原理是我的ArrayList已更新,但这是更好的做法,为什么?有哪些潜在的缺点?

选项1

ArrayList<SomeType> newArrayList = new ArrayList<SomeType>();
Array myArray = something.getSomeArray();
saveArrayToArrayList(myArray, newArrayList);

private static void saveArrayToArrayList(Array myArray, ArrayList<SomeType> newArrayList) {
    for (int j = 0; j < myArray.size(); j++) {
        /* processing myArray[j] to get "SomeType newItem" */
        newArrayList.add(newItem);
    }
}

选项2

Array myArray = something.getSomeArray();
ArrayList<SomeType> newArrayList = saveArrayToArrayList(myArray);

private static ArrayList<SomeType> saveArrayToArrayList(Array myArray) {
    ArrayList<SomeType> newArrayList = new ArrayList<SomeType>();
    for (int j = 0; j < myArray.size(); j++) {
        /* processing myArray[j] to get "SomeType newItem" */
        newArrayList.add(newItem);
    }
    return newArrayList;
}
在谷歌搜索时,我一直在考虑这个问题。对我来说,第二个选项似乎更明显(可能是由于我的背景)但我认为有效的Java用户会认为你不是真正的 Java用户,如果你不明白{ {1}}无论如何都会以任何方式更新。那么哪个更好? :S或者,这是一个愚蠢的问题吗? :S

问题二

其次,对于每个选项,如何命名辅助方法以使每个读取我的代码的人都清楚明白地发生什么? ArrayList对我来说听起来很糟糕,哈哈!

2 个答案:

答案 0 :(得分:1)

在ArrayLists上建议不使用上述方法。

您应该使用view

这样的事情:

insert into tableA (
  a
  ,b
  ,c
  ,d
)
select
  viw.a
  ,viw.b
  ,viw.c
  ,viw.d
from
  view viw
  join tableA tba on
    (viw.a = tba.a)
    or (
      viw.a = tba.a
      and viw.b <> tba.b
      or viw.c <> tba.c
      or viw.d <> tba.d
    )

答案 1 :(得分:0)

我认为两者都是可以接受的,基于你的情况(即传入一个对象来修改而不是返回一个)。如果您的方法获取或创建了某些内容,则可以将其返回。如果要修改某些内容,请将其作为参数传递给方法。请注意,您只能返回一个对象,因此传入要使用2个或更多返回值进行修改的对象可能需要第一个方法。

对于命名,如果从成员变量返回一些东西,它就是一个getter,所以建议使用“get”作为方法的前缀,例如getArrayList()。对于java,“get”标识方法可能属性访问者作为POJO的一部分,所以你通过养成习惯,作为一个java程序员,使用 get来设置自己的成功你的代码中有很多()。