循环List <String>并删除项目的更好方法

Dam*_*men 1 java

我有一个List,如果匹配,我将循环删除列表中的项目.如果列表中的项目被删除,我正在使用i = -1.但它又从头开始循环.有一个更好的方法吗?

private List<String> populateList(List<String> listVar) {
    List<String> list = new ArrayList<String>();
    list.add("2015-01-13 09:30:00");
    list.add("2015-01-13 06:22:12");
    list.add("2015-01-12 05:45:10");
    list.add("2015-01-12 01:52:40");
    list.add("2015-01-12 02:23:45");
    return list;
}

private void removeItems() {
    List<String> list = new ArrayList<String>();
    list = populateList(list);  
    System.out.println("List before modification : "+list);
    for (int i = 0; i <  list.size(); i++) {
        String dateNoTime = list.get(i).split(" ")[0];
        System.out.println("   Going over : "+list.get(i));
        if(!dateNoTime.equalsIgnoreCase("2015-01-13")) {
            System.out.println("      Removing : "+list.get(i));
            list.remove(i);
            i = -1; //This is making the loop start from scratch. Is there a better way?
        }   
    }
    System.out.println("List after modification: "+list+"\n\n");
}
Run Code Online (Sandbox Code Playgroud)

das*_*ght 5

Java List<T>提供了一种更好的方法,通过使用ListIterator<T>以下方法从中删除项目:

ListIterator<String> iter = list.listIterator();
while (iter.hasNext()) {
    String s = iter.next();
    String dateNoTime = s.split(" ")[0];
    if(!dateNoTime.equalsIgnoreCase("2015-01-13")) {
        iter.remove();
    }
}
Run Code Online (Sandbox Code Playgroud)