orderID = 542와 일치하는 단일 요소를 제거하고 싶습니다. 그러나이 프로그램은 해당 목록에서 두 개의 요소를 제거합니다. 실제 프로그램에서 반복자는 arraylist를 반복합니다. 그리고 난arraylist에서 iterating하는 동안 단 하나의 요소를 제거하는 방법
package testMap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class TestHashMap {
static ArrayList<LimitOrder> a = new ArrayList<>();
public static void main(String args[]) {
create();
}
public static void create() {
LimitOrder l1 = new LimitOrder(1, 100, "145");
LimitOrder l2 = new LimitOrder(1, 100, "542");
LimitOrder l3 = new LimitOrder(1, 100, "355");
a.add(0, l1);
a.add(1, l2);
a.add(2, l3);
Iterator<LimitOrder> i = a.iterator();
while (i.hasNext()) {
boolean toremove = false;
LimitOrder l = i.next();
toremove=remove();
if (toremove == true)
{
System.out.println("Removed "+l.orderID);
i.remove();
}
}
}
public static boolean remove() {
boolean flag = false;
Iterator<LimitOrder> i = a.iterator();
while (i.hasNext()) {
LimitOrder l = i.next();
if (l.orderID.equals("542")) {
flag = true;
}
}
return flag;
}
}
나에게
루프 자체에서 첫 번째 ID 검사 조건을 넣을 수 있습니까? 즉, remove() 메서드가 전혀 필요하지 않을 수도 있습니다. –
remove() 메서드에서 조건을 충족하는 경우 플래그를 설정 한 후 루프에서 벗어납니다. –