程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> list-List add() iterator同時遍歷報錯或者結果不對

list-List add() iterator同時遍歷報錯或者結果不對

編輯:編程綜合問答
List add() iterator同時遍歷報錯或者結果不對

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.concurrent.CopyOnWriteArrayList;

public class DiGuiTest {
public static void main(String[] args) {

    List<OrgDto> list = new ArrayList<OrgDto>();
    OrgDto dto1 = new OrgDto();
    dto1.setOrgId(10l);
    dto1.setSupOrgId(3l);
    dto1.setOrgName("10部門");
    list.add(dto1);

    OrgDto dto2 = new OrgDto();
    dto2.setOrgId(12l);
    dto2.setSupOrgId(10l);
    dto2.setOrgName("12部門");
    list.add(dto2);

    OrgDto dto3 = new OrgDto();
    dto3.setOrgId(13l);
    dto3.setSupOrgId(12l);
    dto3.setOrgName("13部門");
    list.add(dto3);

    Long a = 3l;
    List<Long> supList = new CopyOnWriteArrayList<Long>();
    supList.add(a);
    List<String> nameList = new ArrayList<String>();

    Iterator<Long> iterator = supList.iterator();

    while (iterator.hasNext()) {
        Long s = Long.parseLong(iterator.next().toString());
        for (OrgDto o : list) {
            if (o.getOrgId().equals(s)) {
                nameList.add(o.getOrgName().trim());
            } else if (o.getSupOrgId().equals(s)) {
                nameList.add(o.getOrgName().trim());
                supList.add(o.getOrgId());
            }
        }
    }

    for (String n : nameList) {
        System.out.println(n);
    }
}

}

想要實現的是 能夠輸出10部門及其所有子部門的部門名稱,即10部門、12部門、13部門

最佳回答:


 while (iterator.hasNext()) {改成用for(int i=0;i<supList.size();i++){
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved