Arrays 包含数组属性的对象数组的Groovy初始化
我有以下代码:Arrays 包含数组属性的对象数组的Groovy初始化,arrays,groovy,initialization,Arrays,Groovy,Initialization,我有以下代码: class User { String id = "" } class Customer { String id = "" User[] users } Customer[] customers = new Customer[5] for (i=0;i<numCustomers;i++) { customers[i] = new Customer() customers[i].id = "customer:" + (1000+i
class User {
String id = ""
}
class Customer {
String id = ""
User[] users
}
Customer[] customers = new Customer[5]
for (i=0;i<numCustomers;i++) {
customers[i] = new Customer()
customers[i].id = "customer:" + (1000+i)
customers[i].users = new User[3]
for (j=0; j<users.size(); j++) {
customers[i].users[j] = new User()
customers[i].users[j].id = customers[i].id
}
}
为什么会这样?另外,我是Groovy新手,所以请指出我上面代码中的任何其他问题。在您的示例中,您正在创建
customers[I].users=new User[3]
但在将用户分配给custumer时在循环中测试users.size()
假设numCustomers=5,尝试以下方法:
for (i=0; i < numCustomers; i++) {
Customer customer = new Customer()
customers[i] = customer
customer.id = "customer:" + (1000+i)
customer.users = new User[3]
for (j=0; j < 3; j++) {
User user = new User()
user.id = customer.id
customer.users[j] = user
}
}
for(i=0;i
如果要将用户数组替换为列表,则可以如下所示:
class Customer {
String id = ""
List<User> users = new ArrayList<User>()
}
for (i=0; i < numCustomers; i++) {
// ...
for (j=0; j < 3; j++) {
User user = new User()
user.id = customer.id
customer.users.add(user)
}
}
class客户{
字符串id=“”
列表用户=新建ArrayList()
}
对于(i=0;i
怎么样
Customer[] customers = (1000..1005).collect { id ->
new Customer( id:"$id", users:(1..3).collect {
new User( id:"$id" )
} )
}
没有试过,但我觉得没关系
for (j=0; j<users.size(); j++) {
对于未来,我建议使用IDE,IntelliJ有一个非常好的Groovy支持。在
For(j=0;jindead,谢谢。我忽略了它,也是因为我现在使用的编辑器没有指出错误所在。我确信它在前一行。
for (j=0; j<users.size(); j++) {
for (j=0; j<customers[i].users.size(); j++) {