尝试填充列表时出现Java堆空间异常

尝试填充列表时出现Java堆空间异常,java,list,exception,Java,List,Exception,我正在用java编写一个程序,我需要制作一个列表,其中的节点是另一个列表。我的子列表节点代码如下: public class Page { private String word; private int num; public String getWord() { return word; } public void setWord(String word) { this.word = word; }

我正在用java编写一个程序,我需要制作一个列表,其中的节点是另一个列表。我的子列表节点代码如下:

public class Page {

    private String word;
    private int num;

    public String getWord() {
        return word;
    }
    public void setWord(String word) {
        this.word = word;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }

    public Page(String word, int num) {
        this.word = word;
        this.num = num;
    }

}
我的主列表节点的代码为:

import java.util.ArrayList;

public class IndPage {
    private ArrayList<Page> Eggrafi;
    //private ArrayList<Page> Eggrafi = new ArrayList<Page>();

    public IndPage(String name, int bytes) {
        Eggrafi = new ArrayList<Page>();
        Eggrafi.add(new Page(name, bytes));
    }

    public ArrayList<Page> getEggrafi() {
        return Eggrafi;
    }

    public void setEggrafi(ArrayList<Page> eggrafi) {
        Eggrafi = eggrafi;
    }

}
import java.util.ArrayList;
公共类索引页{
私人ArrayList Eggrafi;
//private ArrayList Eggrafi=new ArrayList();
公共IndPage(字符串名称,整数字节){
Eggrafi=新数组列表();
添加(新页面(名称,字节));
}
公共阵列列表getEggrafi(){
返回Eggrafi;
}
公共无效设置eggrafi(ArrayList eggrafi){
Eggrafi=Eggrafi;
}
}
当我在main中使用以下代码来填充我的列表时,我得到一个java堆空间异常:

if(Index.size()!=0){
                            for(int j=0;j<Index.size();j++){
                                for(int y=0;y<Index.get(j).getEggrafi().size();y++){
                                    if((Index.get(j).getEggrafi().get(y).getWord()).equals(tokens[i-1])){
                                        Index.get(j).getEggrafi().add(new Page(fileName[k],byte_count));
                                    }
                                    else{
                                        Index.add(new IndPage(fileName[k],byte_count));
                                    }
                                }
                            }
                        }
                        else{
                            Index.add(new IndPage(fileName[k],byte_count));
                        }
if(Index.size()!=0){

对于(intj=0;j我认为您的代码为每个插入分配了一个新列表

import java.util.List;
import java.util.ArrayList;

public class IndPage {
    private List<Page> Eggrafi = new ArrayList<Page>();

    public IndPage(final String name, final int bytes) {
        Eggrafi.add(new Page(name, bytes));
    }

    public List<Page> getEggrafi() {
        return Eggrafi;
    }

    public void setEggrafi(final List<Page> eggrafi) {
        Eggrafi = eggrafi;
    }

}

我认为您的代码为每个插入分配了一个新列表

import java.util.List;
import java.util.ArrayList;

public class IndPage {
    private List<Page> Eggrafi = new ArrayList<Page>();

    public IndPage(final String name, final int bytes) {
        Eggrafi.add(new Page(name, bytes));
    }

    public List<Page> getEggrafi() {
        return Eggrafi;
    }

    public void setEggrafi(final List<Page> eggrafi) {
        Eggrafi = eggrafi;
    }

}

您的问题在for循环中:

for(int j=0;j<Index.size();j++){
   for(int y=0;y<Index.get(j).getEggrafi().size();y++){
     if((Index.get(j).getEggrafi().get(y).getWord()).equals(tokens[i-1])){
        Index.get(j).getEggrafi().add(new Page(fileName[k],byte_count));
     }
     else{
      Index.add(new IndPage(fileName[k],byte_count));
    }
  }
}

for(int j=0;j您的问题在for循环中:

for(int j=0;j<Index.size();j++){
   for(int y=0;y<Index.get(j).getEggrafi().size();y++){
     if((Index.get(j).getEggrafi().get(y).getWord()).equals(tokens[i-1])){
        Index.get(j).getEggrafi().add(new Page(fileName[k],byte_count));
     }
     else{
      Index.add(new IndPage(fileName[k],byte_count));
    }
  }
}

for(int j=0;jDeclaring“private ArrayList Eggrafi;”两次并初始化它两次(在类中和构造函数中)。很抱歉,private ArrayList Eggrafi=new arrarylist();在注释中。声明“private ArrayList Eggrafi;”两次并初始化它两次(在类中和构造函数中)。很抱歉,私人ArrayList Eggrafi=new ArrayList();出现在评论中。