Ⅰ java中 foreach 和迭代器在遍歷 List 集合 一些情況下為什麼能使用集合自動的刪除方法刪除元素
你a<70的時候是倒數第二位,也就是66,沒有拋出異常是因為之前list大小為5,你刪除66後,list大小為4,你第一次遍歷list大小為5的數組的時候,66的cursor在index = 4,當你刪除後,遍歷list大小為4的數組時, cursor = 4 = newlist.size()。
ArrayList里的這個方法就會判斷list已經讀取完畢了,所以不會拋出異常。
publicbooleanhasNext(){
returncursor!=size;
}
a < 90的時候在第二位就發生了變化,list的大小也發生了變化
看了下ArrayList的源碼,每次循環的時候都會call這個方法檢查list的大小是否發生了變化,但是這個方法是發生在hasNext方法之後的
(){
if(modCount!=expectedModCount)
();
}
Ⅱ java中list的遍歷有幾種方式
1.使用索引(index)來遍歷List
2.使用Iterator來遍歷List。(for-each其實也是利用Iterator)
注意:如果僅僅是遍歷,那麼可以可以使用索引或Iterator來遍歷。但是,如果你在遍歷的同時還要刪除元素,則最好使用Iterator來遍歷和刪除元素,這樣可以避免異常。
Ⅲ JAVA中LISt遍歷時如何remove元素
public
class
RemoveElementDemo
{
public
static
void
main(String[]
args)
{
List<String>
list
=
new
ArrayList<消裂>();
list.add("100012011");
list.add("10001201s1");
list.add("10001201s1");
//中畢解決方案:
//1.i--操作
/*for(int
i
=
0;i
<
list.size();i++){
String
b
=
list.get(i);
if(b.equals("502323232")){
list.remove(i);
i--;
}
}*/
//2.反向遍歷
/*for(int
i
=
list.size()
-
1;i
>=
0;i--){
String
b
=
list.get(i);
if(b.equals("502323232")){
list.remove(i);
}
}*/
//解決方案:調用Iterator的remove()方法安全刪除元素,避免異常
Iterator<String>
iter
=
list.iterator();
while(iter.hasNext()){
String
b
=
iter.next();
if(b.equals("100012011"賣橋芹)){
iter.remove();
}
}
for(String
b
:
list){
System.out.println(b);
}
}
}
Ⅳ 在for循環里遍歷list,然後刪除元素會怎樣
從list中刪除指定元素可中備以使用remove方法來實現:
ArrayList al = new ArrayList();
al.add("a");
al.add("b");
//al.add("b");
//al.add("c");
//al.add("d");
for (int i = 0; i < al.size(); i++) {
if (al.get(i) == "b") {
al.remove(i);
i--;
}
}
在代碼中,刪除元素後,需要把下標減一。這是因為在每次刪除元素後,ArrayList會將後面部分的元素依次往上挪一個位置(就是),所以,下一輪培缺個需要訪問的下標還是當前下標,所以臘辯必須得減一才能把所有元素都遍歷完。
Ⅳ java 怎麼刪除List中的指定元素
主要有三種方法:
用一個List 記錄要刪除的數據猛閉,最後removeAll(List);梁知李
Ⅵ java遍歷list 並刪除相同值對象
用一個for循環遍歷List時,不能刪除其中的元素。
用Iterator操作即可。
還有 Pro類要重寫一下 toString方法。這樣System.out.println里才能列印出來。
import java.util.*;
public class ListTest {
public static void main(String[] args) {
List<Pro> list = new ArrayList();
Pro p1 = new Pro("1000","1000");
Pro p2 = new Pro("1001","1002");
Pro p3 = new Pro("1003","1004");
Pro p4 = new Pro("1005","1006");
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
for (Iterator<Pro> i = list.iterator(); i.hasNext();) {
Pro o = i.next();
if(o.getProid().equals(o.getProName())){
i.remove();
}
}
System.out.println(list);
}
}
class Pro{
private String proid;
private String proName;
public String getProid() {
return proid;
}
public void setProid(String proid) {
this.proid = proid;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public Pro(String proid, String proName) {
super();
this.proid = proid;
this.proName = proName;
}
public Pro() {
}
public String toString() {
return proid + ":" + proName;
}
}
Ⅶ 如何從Java List中取出前100的數據並且刪除掉
java List中取出前100的數據並且刪除掉,遍歷list集合,把數據取出存到新集合,再刪除掉,如下方法:
packagecom.test;
importjava.util.ArrayList;
importjava.util.List;
publicclassTestA{
publicstaticvoidmain(String[]args){
//定義集合
List<String>list=newArrayList<String>();
//給集合存150個值
for(intx=1;x<=101;x++){
list.add("a"+x);
}
System.out.println("原集合內容:"+list);
List<String>list2=newArrayList<String>();
//循環獲取和移除掉100值
for(intx=0;x<1;x++){
//獲取
Stringa=list.get(x);
list2.add(a);
//移除
list.remove(a);
//list2集合夠100則跳出循環
if(list2.size()==100){
break;}
//移除掉list集合一個元素,長度減一,標量應該不變所以減一,後面會x++
x--;}
System.out.println("取出的100值:"+list2);
//輸出剩下的值
System.out.println("剩下的list值:"+list);}