天天看點

循環删除List中的元素的問題-兩種方式(不一樣的結果)

public void test(List<String> texts){    
    if (texts != null && texts.size() > 0) {
        List<File> delFiles=new ArrayList<File>();
    //                        Iterator<File> iterator= stateFiles.iterator();
        for (String text : texts) {
            //第一種方式:從Iterator中删除目标集合中的元素
            /*while(iterator.hasNext()){
                File tempStateFile=iterator.next();
                if (text.equals(tempStateFile.getName())) {
                    iterator.remove();
                }
            }*/

            //第二種方式:在周遊集合後将滿足條件的元素存入另一集合中,周遊完畢之後,再調用集合的 removeAll 方法,傳入待删除元素集合
            for (File stateFile : stateFiles) {
                System.out.println("____________"+text.equals(stateFile.getName()));
                if (text.equals(stateFile.getName())) {
                    delFiles.add(stateFile);
                }
            }
        }
        stateFiles.removeAll(delFiles);
    }
    System.out.println("0000----");
    System.out.println("stateFiles.size:"+stateFiles.size());
}
           

兩種方式在周遊一個集合後删除該集合的元素,if的條件判斷都為真

        使用Iterator的方式,最後輸出的size為2,??

        使用根據另一個集合中的元素删除本集合中的元素(removeAll),最後輸出結果為0---正确的

        ---這兩種方式有出入

繼續閱讀