【问题标题】:Is there a way to add array objects to a class?有没有办法将数组对象添加到类中?
【发布时间】:2020-12-31 18:03:37
【问题描述】:

我对此很陌生,但我正在尝试将对象数组添加到 android studio 中的类中。我创建了一个“用户”类,用于存储每个用户的信息。我需要为每个用户创建一个对象,并设置适当的变量(名称、密码和喜欢的颜色),并将其存储在数据结构中。正如您在下面的代码中看到的那样,我一直在尝试找出解决此问题的最佳方法,但我仍然不确定。如果有人可以请帮助或给我任何指导,将不胜感激。

public class User {

String user1[] = new String[3];
String user2[] = new String[3];
String user3[] = new String[3];
String user4[] = new String[3];
String user5[] = new String[3];

String user[] = {"Jason", "Sword", "Red"};

}

【问题讨论】:

    标签: java arrays android-studio object


    【解决方案1】:

    我认为你需要稍微改变一下你的结构。

    您在上面给我们的类并不是真正的用户,而是一组用户。我建议您相应地重命名该类,例如用户组。 “用户”也可以正常工作,但如果有人快速浏览代码,他们可能会认为他们阅读的是“用户”而感到困惑。我很确定我会的!

    创建一个名为 User 的不同类,其中包含一堆字符串字段,用于存储您要存储的不同值,例如

    public class User {
      String name;
      String weapon;
    
      public User(String name, String weapon) {
        this.name = name;
        this.weapon = weapon;
      }
    
    }
    

    回到你的 UserGroup 类,不要保存字符串数组而是实际的用户,例如

    public class UserGroup {
    
      User user1 = new User("Jason", "Sword");
    
    }
    

    【讨论】:

    • 太棒了,效果很好,谢谢日出!有没有办法可以将用户对象存储到变量中,以便可以从其他活动中访问它?因为我需要检查用户对象是否与用户输入匹配。
    • 我很高兴 :) 我花了一段时间才弄清楚如何正确地构建类和分离事物。您当然可以将用户存储在一个整洁的集合中以便在其他地方使用:Java 集合!有关官方文档的条目,请参见此处:docs.oracle.com/javase/8/docs/api/index.html。我不建议使用数组,因为您必须预先说明用户数量,然后将其固定。然而,像 ArrayList 这样的东西会给你更多的灵活性来决定任何时候有多少用户。
    • 所以您认为我应该将用户对象放入 ArrayList 以便在其他活动中访问它们?
    • 这在很大程度上取决于您和您的程序。如果您想在其他地方引用特定用户,您可以从需要的地方实例化该用户并传递变量引用。如果您想将所有用户集中在一个地方并有办法将它们作为捆绑包传递以在其他地方处理,那么您将需要某种集合。 ArrayList 因其灵活的大小而浮现在脑海中,但是您想对用户包执行的操作将决定哪种结构最适合您。如果是双倍,试试 ArrayList 看看是否有效或它让你失望:)
    • 哦,好的,谢谢!它是一种登录应用程序,我需要检查用户输入的用户名和密码是否与其中一个用户对象匹配
    【解决方案2】:

    当您使用 Android Studio 时,我想您想制作一个应用程序。因此,如果这是您必须将用户数据存储在文件中的想法,因为类是一个逻辑结构。类仅在运行时有效。因此,当您使用一个类时,在运行后它将破坏几乎没有用的用户数据。最好使用文件和对象,不要忘记使用安全哈希算法作为密码。

    【讨论】:

    • 是的,我明白,但这只是我需要做的一项任务,所以一旦应用程序关闭它就会被销毁,这并不重要。
    【解决方案3】:

    你可以使用两个Hash Map。 'UserAPass' 用于存储名称和密码。 'UserAFavCol' 用于存储名称和喜欢的颜色。 将两个哈希映射设为静态,以便可以根据应用使用情况在实例之间共享。

    import java.util.HashMap;
    public class User {
    static HashMap<String, String> UserAPass = new HashMap<String, String>();
    static HashMap<String, String> UserAFavCol = new HashMap<String, String>();
        void addUser(String name, String pass, String col) {
            UserAPass.put(name, pass);
            UserAFavCol.put(name, col);
        }
    }
    

    【讨论】:

      【解决方案4】:
      public class User {
      public User(String name, String password, String favouriteColor) {
          this.name = name;
          this.password = password;
          this.favouriteColor = favouriteColor;
      }
      
      private String name;
      
      private String password;
      
      private String favouriteColor;
      
      public String getName() {
          return name;
      }
      
      public void setName(String name) {
          this.name = name;
      }
      
      public String getPassword() {
          return password;
      }
      
      public void setPassword(String password) {
          this.password = password;
      }
      
      public String getFavouriteColor() {
          return favouriteColor;
      }
      
      public void setFavouriteColor(String favouriteColor) {
          this.favouriteColor = favouriteColor;
      }
      
      public static void main(String[] args) {
          User users[] = {new User("Jason", "Sword", "red"), new User("Jack", "MyWord", "green")};
      }
      

      }

      【讨论】:

      • 非常感谢杰克。您知道如何检查用户输入的详细信息是否与课堂上的内容相同吗?
      • 一般来说,检查一个类中是否有相同的属性是没有意义的。我猜你的意思是判断列表中是否有重复的用户类。如果是这种情况,重写用户类的equal方法,调用列表的contains方法,就可以知道是否有属性重复的用户
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多