这是在类本身中关联静态对象列表的一种良好的Java做法(就内存和时间而言,就计算效率而言)。

package collection;

/**
 * Created by ANJANEY on 5/28/2014.
 */

import java.util.*;

    class Student1
    {

    int rollId;
    String name;

    static List<Student1> studentList=new ArrayList<Student1>();

    Student1(int rollId,String name)
    {
        this.rollId=rollId;
        this.name=name;
        studentList.add(this);
    }


    }

    public class A {

    public static void main(String aaaa[])
    {
        new Student1(1,"Anjaney");
        new Student1(2,"Prerak");

        Iterator<Student1> itr=Student1.studentList.iterator();

        while(itr.hasNext())
        {
            Student1 st=itr.next();
            System.out.println("Roll = "+st.rollId+" Name = "+st.name);
        }
    }

    }

最佳答案

您在此处实现的称为“实例控制”类(请参阅有效的Java-Joshua Bloch第2章-项目I)。

通常,开发人员使用静态工厂来实现实例控制的类,您可以保留对已创建对象的引用(就像您使用该List一样),还可以进行其他操作(例如限制实例数)。一个著名的“实例控制”类的私有案例称为Singleton(尽管在这种情况下,没有必要保留列表...)。

从性能的角度来看,将列表保留在类内或类外都不会带来任何有意义的收益/损失。

08-03 17:28