使用java中的循环创建具有不同标识的类

时间:2013-10-28 18:09:51

标签: java arraylist

我试图创建类并将它们放入ArrayList

import java.util.*;

public class UserGroup 
{
    ArrayList<User> userList = new ArrayList<User>();

    public UserGroup() 
    {

    }

    public void addSampleData() 
    {
        for (int i = 1; i < 11; i++) 
        {
            String iConvert = "User" + Integer.toString(i);
            System.out.println(iConvert);

            userList.add(iConvert(iConvert, iConvert, iConvert));
        }

    }
}

试图在循环中使用一个字符串来改变我称之为每个对象的字符

下面是User类构造函数需要3个字符串,这是iConverts的原因(iConverts,iConverts,iConverts) 我试图使用String

命名对象
public class User {

    /*
    * contains a username, usertype and names (constructor uses these)
    * methods within getUsername, getUserType, getName and setUserType
    */

    String username;
    String userType;
    String name;

    public User(String username, String userType, String name)
    {

    }

    protected String getUsername()
    {

        return username;
    }

    protected String getUserType()
    {

        return userType;
    }

    protected String getName()
    {

        return name;
    }

    protected void setUserType(String newType)
    {
        userType = newType;
    }

}

5 个答案:

答案 0 :(得分:2)

如果您将对象添加到ArrayList,那么您可以将其设为:

userList.get(0);
userList.get(1);
userList.get(2);

因此没有必要更改名称。通过名称,这不是被称为类,您正在向ArrayList添加对象。尝试做这样的事情。

public void addSampleData() 
{
    for (int i = 1; i < 11; i++) 
    {
        userList.add(User(...));
    }

}

答案 1 :(得分:1)

您创建了一个将保存User对象的ArrayList,因此尝试执行

UserList.add(iConvert(iConvert, iConvert, iConvert));

毫无意义。

您可能希望这样做(如果您的User对象有3个字符串作为构造函数参数):

UserList.add(new User(iConvert, iConvert, iConvert));

答案 2 :(得分:1)

默认情况下,一个对象是唯一的ID,不用担心。

只需将您的代码更改为。

userList.add(new User(iConvert));

并将User类的构造函数更改为:

public User(String iConvert) {...}

答案 3 :(得分:1)

首先要记住String是一个不可变类型。实例化后,您无法更改它。其次,构造函数只能被调用一次。看起来好像是第二次尝试调用String构造函数。接下来,由于您使用Generics来声明列表将包含哪些类型的ojbect,因此您必须确保仅将User类型放入其中,否则编译器将给您一个错误。

所以你需要像

这样的东西
ArrayList<User> userList = new ArrayList<User>();
for(int i=0; i<10; i++){
   User user = new User("User" + i);
   userList.add(user);
}

答案 4 :(得分:0)

这不起作用

        userList.add(iConvert(iConvert, iConvert, iConvert));

iConvert是一个字符串实例,您试图将其称为方法。