在Java中使用ArrayList存储姓名和年龄

在Java中使用ArrayList存储姓名和年龄,java,Java,我想在ArrayList中添加字符串和整数类型的值 例如,我有一个数组列表,我想在一个数组列表中添加相应人员的姓名和年龄 我怎样才能做到这一点。我怎么能得到这个?实际上,我正在从数据库中检索数据,并希望将所有员工姓名和年龄保存在一个数组列表中。与多维数组列表类似。您可以使用simple并添加装箱类型int,以及字符串您应该创建一个类来表示一个人,然后将其添加到列表中。在列表中混合对象类型是一种不好的做法。您可以从一个简单的person类开始: class Person { private

我想在ArrayList中添加字符串和整数类型的值

例如,我有一个数组列表,我想在一个数组列表中添加相应人员的姓名和年龄


我怎样才能做到这一点。我怎么能得到这个?实际上,我正在从数据库中检索数据,并希望将所有员工姓名和年龄保存在一个数组列表中。与多维数组列表类似。

您可以使用simple并添加装箱类型
int
,以及
字符串

您应该创建一个类来表示一个人,然后将其添加到列表中。在列表中混合对象类型是一种不好的做法。您可以从一个简单的person类开始:

class Person {
    private String name;
    private int age;

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

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}
然后创建如下列表:

List<Person> people = new ArrayList<Person>();

创建带有年龄和姓名的person类,然后创建该类型的ArrayList

class Person {
  private String mName;
  private int mAge;
  public Person(int age, String name) {
     mName = name;
     mAge = age;
  }
  public String getName() {
     return mName;
  }
  etc ........
}

ArrayList<Person> arr = new ArrayList<Person>();
arr.add(new Person(10, "joe"));
班级人员{
私有字符串mName;
私人智力法师;
公众人物(整数年龄,字符串名称){
mName=名称;
法师=年龄;
}
公共字符串getName(){
返回mName;
}
等
}
ArrayList arr=新的ArrayList();
arr.add(新人员(10,“joe”);
员工等级{
智力年龄;
字符串名;
//+acessor法
}
Lit list=新的ArrayList();

您可以创建一个Person类

class Person{
 String name;
 int age;
 //Add the getteres and setters
}
然后声明一个arrayList,如下所示

ArrayList<Person> p = new ArrayList<Person>();
p.add(personObj);

要确保编译器不会抱怨,请使用泛型指定要将对象添加到ArrayList中;这将允许您向其中添加Integer和String两种类型:

ArrayList myList=new ArrayList()

然后,您可以向其中添加任意类型的对象


但是,Java是强类型的,这是有原因的,因此需要在一个ArrayList中添加两种类型,这对我来说是一个设计问题。

您可以创建一个
ArrayList
Integer
String
都是
对象
的子类,因此都可以添加到
数组列表

也就是说,在我看来,你不太可能真的想这么做。
ArrayList
是一个列表。如果你在列表中存储的东西在某种意义上不是同一种东西,那通常是一种难闻的气味(即:设计不佳的标志)

在您描述的元素之间建立对应关系意味着您实际上需要一个employee对象列表,其中每个employee对象都有一个名称和年龄


如果名称是唯一的,另一种可能是使用
映射。如果你关心维护秩序,你可以使用
LinkedHashMap

这是一个很好的答案——你会发现你实际上总是需要一个Person类——你的代码设计得不正确。希望将这对值存储在同一个集合中是一个提示,它确切地告诉您这一点。当你有任何关于姓名和/或年龄的操作时,你应该在“Person”中添加方法,你甚至可能会发现你有更多属于这里的值。好的,朋友。但假设我有200条记录,则需要1000个对象。我想这会降低我的表现。我实际上是在安卓系统中做这个项目的?我本来打算投票支持这个项目的,但是注意到了公共变量。Ryan的答案更完整(尽管老实说,我一开始经常这样做——只是随着Person演变成一个拥有自己方法和更多属性的真实类,我总是希望我一开始就将变量私有化)@Durga Dutt不,这正是编写优秀OO的方式。也不要基于感知到的性能问题做出假设——在做任何事情之前进行测试。一般来说,由于它是一种面向对象语言,并且针对面向对象编码进行了优化,因此您可能会发现它的性能优于其他解决方案。@Durga:对于这么多记录来说,这几乎肯定不会成为性能问题@比尔是对的,在你知道需要优化之前不要优化。我非常怀疑你是否需要为这个案子辩护。@Bill:是的,我第一次错过了私有字段和getter方法。我已经更新了完整性的答案。我甚至可能会让他们进入决赛,但我想二传手可能是需要的,这对这个例子来说并不重要。哇,很多答案都在说同样的事情。
ArrayList<Person> p = new ArrayList<Person>();
p.add(personObj);