A. java怎麼循環遍歷ArrayList
除了用for循環也可以用迭代器
ArrayList<String> al=new ArrayList<String>();
for(int i=0;i<10;i++){
al.add(String.valueOf(i));
}
Iterator<String> it=al.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
B. Java數組的元素個數不固定,如何遍歷或者用ArrayList寫出來
String數組聲明時長度n必須指定,怎麼獲得n就靠你輸入一個或者其他方式去確定了。或者換成
ArrayList<String> list=new ArrayList<String>();
list.add("");
遍歷:
foreach(String s in list){
System.out.println(s);
}
長度是list.size()
ArrayList其實就是數組,初始長度為10,好像在jdk哪個版本之後長度一旦超過10會重新聲明一個長度為15的數組,並且重新賦值,之後類推,以數組長度的一半作為遞增量,即是10-15-22(15+7)-33-。。。。
很久以前遞增量是翻倍的,10-20-40-80.。。
C. 如何在java中實現List集合的遍歷
java中實現List集合的遍歷有三種方法:
for(Stringattribute:list){
System.out.println(attribute);
}
for(inti=0;i<list.size();i++){
system.out.println(list.get(i));
}
Iteratorit=list.iterator();
while(it.hasNext()){
System.ou.println(it.next);
}
D. java 遍歷arraylist 哪種方法好
arraylist 數組的方式實現 , 當然是用for 循環 也可以用 foreach但是效率最高的還是用下標索引的方式
E. java遍歷Arraylist比較大小:
直接訪問ArrayList中的每個元素是不行的,因為ArrayList不可以實現隨機訪問。有一個辦法:定義一個數組,比如;List<Integer> l=new ArrayList<Integer>();int arr[];arr=new int[l.size()];for(int i=0;i<l.size;i++){ arr[i]=l.get(i);}通過for循環取出ArrayList中的每個元素,存放在數組中,那麼通過數組比較就容易了,因為數組通過下標可以方便的訪問。
F. JAVA編程題目: ArrayList存儲任意三個字元串,並遍歷(迭代器遍歷)
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayList<String>a=newArrayList<String>();
a.add("ABC");
a.add("DEF");
a.add("XYZ");
//寫法1
for(Iterator<String>i=a.iterator();i.hasNext();){
Stringe=i.next();
System.out.println(e);
}
//寫法2
for(Stringi:a){
System.out.println(i);
}
}
}
G. Java中遍歷ArrayList的過程中刪除元素操作會發生並發修改異常
首先搞清楚不是x=n-1不報錯。是因為他避開了錯誤,實際當你用倒數第2個來刪除的時候,他就已經跳出循環,不會判斷最後以為,這是為什麼呢?
我們先看看加強for循環是怎麼實現的。都知道是通過迭代實現,那麼將for寫成迭代器來看。
Iterator<Object>itr=al.iterator();
while(itr.hasNext()){
Objecto=itr.next();
System.out.println(itr.hasNext());
if("n".equals(o)){
al.remove(o);
}
}
以上就是加強for循環的真正樣子。再來透析源代碼。
al.iterator():返回一個迭代器沒什麼好說的;
itr.hasNext():通過判斷cursor(游標) != size(長度)來決定是否結束循環,cursor(游標) 初始是0 每次經過itr.next() +1;當cursor==size時 會跳出循環,這也是為什麼倒數第2個不會出錯的主要原因;
itr.next(): 看源代碼可以發現每次在next()調用後,都會先調用checkForComodification()這個方法;
checkForComodification(): 主要作用是判斷itr迭代器數據是否和list一致,
有兩個參數,
第一個modCount 集合結構變動次數,如:一開始你add調用了7次,那麼這個數就是7,
第二個expectedModCount 在調用iterator()方法時,初始化值等於modCount ,
這個方法判斷當modCount !=expectedModCount 時
拋出異常,如果你調用迭代器的remove方法,expectedModCount 會重新賦值,但是你調用的是list的remove方法,那麼modCount 就會+1 而expectedModCount 不變,這就會造成modCount !=expectedModCount;
最後,看看為什麼倒數第2個不會拋異常:
當他遍歷到「n-1」時,cursor=6,然後調用remover(o)方法,size=6,這個時候調用了itr.hasNext()判斷cursor是否等於size,前面說過,當cursor==size時,跳出循環,那麼就不會進入next(),也就不會進入checkForComodification()方法,所以不會拋出異常,說白了,也就是循環次數少了一次。
結合著源碼看,應該會比較清晰。
H. java中怎麼遍歷list集合
常用的List集合, 可以使用下面幾種方式進行遍歷
參考代碼
importjava.util.ArrayList;
importjava.util.Iterator;
publicclassTest{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
list.add(5);
list.add(8);
list.add(9);
//方案一推薦.簡潔
for(Integere:list){
System.out.print(e+",");
}
//方案二
for(inti=0;i<list.size();i++){
System.out.println(list.get(i));
}
//方案三
Iterator<Integer>it=list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
I. java ArrayList 隨機訪問、遍歷 性能
說ArrayList在進行隨機訪問和遍歷元素時,能提供較好的性能應該是跟LinkList對比的吧,插入刪除操作多的話用LinkList比較好,《Java編程思想》是這樣說的