首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有外部类和内部类的数组

具有外部类和内部类的数组
EN

Stack Overflow用户
提问于 2013-08-05 07:51:08
回答 5查看 3.9K关注 0票数 1

我对Java比较陌生。我想创建一个外部类的arraylist,并且对于arraylist的外部类的每个索引,我想要一个内部类的arraylist。

代码语言:javascript
运行
复制
public Outerclass{

    //Code Here

    public InnerClass{
    //Code Here
    }
}

//My attempt at setting up the arrays
public ArrayList <Outerclass> olist;
public ArrayList <InnerClass> ilist;


 olist= new ArrayList<Outerclass>();
 for (int i = 0; i < 3; i++) {
      Outerclass c = new Outerclass ();
      ilist = new ArrayList<InnerClass>();
      for(int j = 0 ; j < 4; j++){
          InnerClass e = new InnerClass();
          ilist.add(e);
      }
      olist.add(c);
 }

这样行得通吗?

EN

Stack Overflow用户

发布于 2016-09-29 03:35:50

如果您有用于数据存储的嵌套类,则对答案#2稍加改进,意味着您有一个外部类的构造函数,该构造函数自动为内部类生成数量可变的数组成员,如树结构。这个解决方案实际上是一种变通方法,它使用一个已定义的成员- ArrayList -它可以在以后扩展,而不是在OuterClass中直接定义InnerClass[]数组,如果它不是静态的,就不会工作。

代码语言:javascript
运行
复制
public class OuterClass
{
    private int NumberInnerClassInstances;       
    // ... other members of OuterClass
    ArrayList<InnerClass> innerClassInstances = new ArrayList<>();

    OuterClass( input vars ...)  {
        // calculate the NumberInnerClassInstances needed
        for(int i = 0 ; j < NumberInnerClassInstances; i++) {
            OuterClass.InnerClass in = this.new InnerClass(i);
            innerClassInstances.add(in);
        }
    }

    public class InnerClass
    {
        int icvar;
        InnerClass(int i) {
            //...construct the Inner Class Member #i
            // can access the members of OuterClass
        }
    }
}

然后,您可以从外部使用get访问InnerClass实例:

代码语言:javascript
运行
复制
oc = new OuterClass( vars ...)
var = oc.InnerClassInstances.get(i).icvar
票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18048808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档