【问题标题】:Add Variables From Class To An ArrayList将变量从类添加到 ArrayList
【发布时间】:2018-05-06 05:00:06
【问题描述】:

我们应该创建 2 个 .java 文件。然后,我尝试将 FakeUser.java 中的构造函数中的所有详细信息添加到 ReviewSpammer.java 中名为 users 的 ArrayList 中,但是似乎无法理解如何做到这一点?

FakeUser.java:

public class FakeUser {
private String name;
private int age;
private String location;

public FakeUser(String name, int age, String location){
    this.name = name ;
    this.age = age;
    this.location = location;
}

public String toString(){
    return name + ", " + age + ", " + location;
}
}

ReviewSpammer.java

public class ReviewSpammer {
    private ArrayList<String> phrases;
    private ArrayList<String> stories;
    private ArrayList<Class> users;

    public ReviewSpammer(){

    }

    public void addPhrase(String newPhrase){
        phrases = new ArrayList<>();
        phrases.add(newPhrase);
    }

    public void addStory(String newStory){
        stories = new ArrayList<>();
        stories.add(newStory);

    }

    public void addUser(Class FakeUser){
        this.users = new ArrayList<>();
    }
}

【问题讨论】:

  • 提示:Class FakeUser 不是您定义 FakeUser 类型变量的方式。 String 是一个类,你使用这个类没有问题,所以对你自己的类做同样的事情。提示 2:new ArrayList&lt;&gt;() 创建了一个全新的列表,正如人们所怀疑的那样。您希望添加到现有列表中,而不是不断创建新列表。

标签: java arrays class arraylist


【解决方案1】:

我不确定我是否理解您的问题,但如果您想使用您应用中的所有用户,您将需要一个容器来组织所有用户。

如果会看一些链接这个(只是伪代码):

   public class UserContainer {

     private List<User> allUsers;

     //Singelton Constructor for the container

     public addUser(User user) {
     allUsers.add(user)
     }

   }

   //update your FakeUser constructor

   public FakeUser(String name, int age, String location){
     this.name = name ;
     this.age = age;
     this.location = location;
     UserContainer.getInstance().addUser(this);
   }

您还应该注意删除用户。

希望这会有所帮助;)

【讨论】:

    【解决方案2】:

    如果我理解正确,您想在用户列表中添加一个或多个 FakeUser?

    public class ReviewSpammer {
        private ArrayList<String> phrases;
        private ArrayList<String> stories;
        private ArrayList<FakeUser> users;
    
        public ReviewSpammer() {
            phrases = new ArrayList<>();
            stories = new ArrayList<>();
            users = new ArrayList<>();
        }
    
        public void addPhrase(String newPhrase){
            phrases.add(newPhrase);
        }
    
        public void addStory(String newStory){
            stories.add(newStory);
        }
    
        public void addUser(FakeUser newUser){
            users.add(newUser);
        }
    }   
    

    然后像这样使用它:

    ReviewSpammer reviewSpammer = new ReviewSpammer();
    
    FakeUser johnDoe = new FakeUser("John Doe", 22, "New York");
    reviewSpammer.addUser(johnDoe);
    

    【讨论】:

    • 谢谢@Gorazd!是的,这正是我想要做的。
    【解决方案3】:
    import java.util.*;
    import java.lang.*;
    import java.io.*;
    
    class FakeUser {
    
    private String name;
    private int age;
    private String location;
    
    public FakeUser(String name, int age, String location){
        this.name = name ;
        this.age = age;
        this.location = location;
    }
    
    public String toString(){
        return name + ", " + age + ", " + location;
    }
    
        public static void main(String[] args)
        {
            FakeUser user=new FakeUser("anupam",20,"delhi");
            FakeUser user2=new FakeUser("lucky",20,"delhi");
            ReviewSpammer rs=new ReviewSpammer();
            rs.addPhrase("phrase");
            rs.addStory("story");
            rs.addUser(user);
            rs.addUser(user2);
    
            ArrayList<FakeUser> list=rs.users;
    
            for(int i=0;i<list.size();i++)
            {
                FakeUser fake=list.get(i);
                System.out.println(fake.name+" "+fake.age+" "+fake.location);
            }
    
    
        }
    
    }
    
    
     class ReviewSpammer {
        private ArrayList<String> phrases;
        private ArrayList<String> stories;
        public ArrayList<FakeUser> users;
    
        public ReviewSpammer(){             /*Make the arraylist in constructor, not in the methods below as you did */
            phrases = new ArrayList<>();
            stories = new ArrayList<>();
            users = new ArrayList<>();
    
        }
    
        public void addPhrase(String newPhrase){
            phrases.add(newPhrase);
        }
    
        public void addStory(String newStory){
            stories.add(newStory);
    
        }
    
        public void addUser(FakeUser user){ /* Make the array list of **FakeUser** class not of **Class** and pass the object of FakeUser as parameter*/
            users.add(user);
        }
    }
    

    这是您想要的工作演示。如果理解代码有问题,请告诉我。我已经解释了你在 cmets 中的错误。

    【讨论】:

    • 如果有问题,不要要求解释你的答案;你应该解释你做了什么:)
    • 没关系 - 它只是让 OP 或任何未来的读者更容易。
    猜你喜欢
    • 1970-01-01
    • 2015-03-30
    • 2020-11-08
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多