尝试填充列表时出现Java堆空间异常
我正在用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; }
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();出现在评论中。