我想刪除與orderID = 542匹配的單個元素,但是這個程序是從該列表中刪除兩個元素。在真正的程序中,通過一個ArrayList我調用一個函數來檢查元素是否被從列表中刪除,該功能是假設從列表中刪除元素如何從迭代列表中只刪除一個元素
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;
}
}
請幫我
你不能把條件檢查第一個while循環本身?我的意思是,你根本不需要remove()方法。 – 2013-03-23 06:36:23
在remove()方法中,如果符合條件,則在設置標誌後跳出循環。 – 2013-03-23 06:43:01