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编程思想》是这样说的