簡體   English   中英

ArrayList的遞歸方法

[英]Recursive method with ArrayList

我在學習編程課程時遇到了一些麻煩。

我上過這樣的課:

該類的UML

在此處輸入圖片說明

而且,我必須采用一種公共方法來從一個部門返回子部門的總數。

這是整個類的代碼:

public class Sector {

private int number;
private String name;
private String type;

private ArrayList<Sector> sectors = new ArrayList<>();   

public Sector(int number, String name, String type) {
    this.number = number;
    this.name = name;
    this.type = type;
}

遞歸方法是這個

public ArrayList<Sector> getTotalSectors(Sector sector, ArrayList<Sector> sectors) {                    
    sectors.add(this);            
        if (sector.getSectors() != null) {
            for(Sector sector1 : sector.getSectors()) {
                getTotalSectors(sector1, sectors);
            }
        }        
    return sectors;
}

但是我無法使其工作,當我嘗試在主菜單中調用該方法時,我得到了這個

Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
at java.util.ArrayList$Itr.next(ArrayList.java:851)

**主班**

Sector s1 = new Sector(100, "sales", "sales");
    Sector s1_1 = new Sector (101, "minor sales", "minor");
    Sector s1_2 = new Sector (102, "mayor sales", "mayor");
    Sector s1_2_1 = new Sector (102, "lala sales", "lalala");

    s1.getSectors().add(s1_1);
    s1.getSectors().add(s1_2);
    s1_2.getSectors().add(s1_2_1);

s1.getTotalSectors(s1, s1.getSectors());

任何我在做什么錯的想法嗎?

在您的getTotalSectors方法中,用下面的代碼替換if-結構內的for循環。 如果使用Iterator類,則不會發生所發生的異常。

   Iterator<Sector> iter = sectors.iterator();
    while (iter.hasNext()) {
    Sector sector1=iter.next();
    getTotalSectors(sector1, sectors);
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM