如何在Java中创建对象的数组列表

时间:2013-09-17 19:37:03

标签: java arrays list class object

有这个:

static class Girl{
    public String age;
    public String name;
    public String id;
}

static Girl[] girl;

然后我无法在我的主要功能中执行此操作:

ResultSet r = s.executeQuery("select count(*) from children");   
r.next();
girl_count=r.getInt(1);
girl = new Girl[girl_count];

r = s.executeQuery("select * from children");   
int i = 0;
while(r.next()){
    i = r.getString("id");
    if(girl[i]==null)girl[i]=new Girl();
    girl[i].age=r.getString("age");
    girl[i].name=r.getString("name");
    girl[i].id=r.getString("id");
}

上面的代码不起作用,我想要实现的是:

System.out.println(girl[3]);

特别是这一行:

 girl = new Girl[girl_count];

任何人都可以帮我纠正这段代码吗? - 或者找出我在这里缺少的东西?

2 个答案:

答案 0 :(得分:5)

Java最佳实践表明,您的类名应该以大写字母开头,而您的变量/字段名称应该是小写的。在这种情况下,我相信你的代码无法编译,因为你有一个名为'girl'的类和一个同名的变量。

将您的班级改为大写字母:

static class Girl{ ...}

从那里开始。错误消息也很容易理解。

答案 1 :(得分:0)

从评论中:你需要一张你想要达到的地图:

Map<Integer, Girl> girls = new HashMap<Integer, Girl>();

while(r.next()){
    int i = r.getInt("id"); // note the getInt()
    Girl g = girls.get(i); //attempt to get girl from map by ID, returns null if not found

    if(g==null) { // check if null
        g=new Girl(); // create
        girls.put(i,g); //put into map
    }
    g.age=r.getString("age");
    g.name=r.getString("name");
    g.id=r.getString("id");
}

当您想要访问地图的元素时:

Girl found = girls.get(id); //id is an Integer

迭代Girl实例:哇,我刚刚写了我写的内容???我有一个妻子!

for(Girl girl: girls.values()) {
   System.out.println(girl.name); //here you can do anything to the Girl, what morality permits...

}

此外,您可以使用.keySet()方法迭代密钥。

或者如果您也想要ID:

for(Map.Entry<Integer,Girl> entry: girls.entrySet()) {

   Integer id = entry.getKey();
   Girl girl = entry.getValue();
   System.out.println(girl.name); //here you can do anything to the Girl, what morality permits...

}

然而的行为是,当结果集中有更多具有相同id的女孩时(无论如何都不可能),它会覆盖所述女孩的属性,使其不具有确定性...... < / p>