很抱歉这个模糊的标题。没想到好的。
情况:
在这种情况下哪个更好?
示例:
List<User> users = .....;
UserInfo[] userInfos = getUserInfoFromUser(users); //(conversion method will loop and generate array, then return it.)
或
List<User> users = .....;
UserInfo[] userInfos = new UserInfo[users.size()]
for (int j = 0; j < users.size(); j++) {
userInfos[j] = getUserInfoFromUser(users.get(j));
}
在第一种方法中,我们传递一个大对象(User列表)作为参数,然后我们多次调用相同的方法。哪个更好?
用户列表的大小范围为25-200个对象。
答案 0 :(得分:5)
如何使用两个转换方法,一个采用User
并返回UserInfo
的方法(这可能也可能应该是UserInfo
的构造函数)和一个接受List的,循环并在内部调用第一个?
列表的大小无关紧要。
答案 1 :(得分:2)
我认为这取决于您执行此操作的频率,因为您不希望在代码中的多个位置重复相同的循环。
我建议创建两个方法,一个返回单个用户的信息,另一个返回用户列表的信息:
public UserInfo[] getInfoForUsers(List<User> users) {
UserInfo[] userInfos = new UserInfo[users.size()];
for (int j = 0; j < users.size(); j++) {
userInfos[j] = getInfoForUser(users.get(j));
}
return userInfos;
}
public UserInfo getInfoForUser(User u) {
}
答案 2 :(得分:0)
我更喜欢第一种方法,因为它很简单,参数也是users
对象的地址。所以在这种情况下无论大小都无关紧要。
答案 3 :(得分:0)
在这两种情况下,Java都会传递对象的引用。在第一种情况下,它是对用户集合的引用,在第二种情况下是对用户的引用。
答案 4 :(得分:0)
我建议使用第一个选项:传递整个数组!
减少函数调用次数肯定会付出代价。
答案 5 :(得分:0)
没有区别:在第一个版本中,函数实现将执行第二个版本。此外,可能想要一个功能User - &gt;的UserInfo。