1.使用索引(index)来遍历List。
2.使用Iterator来遍历List。(for-each其实也是利用Iterator)
注意:如果仅仅是遍历,那么可以可以使用索引或Iterator来遍历。但是,如果你在遍历的同时还要删除元素,则最好使用Iterator来遍历和删除元素,这样可以避免ConcurrentModificationException异常。
java中实现List集合的遍历有三种方法:
方法一:for-each循环
for(String attribute : list) {。
System.out.println(attribute);。
方法二:for循环
for(int i = 0 ; i < list.size() ; i++) {。
system.out.println(list.get(i));。
方法三:迭代器迭代
Iterator it = list.iterator();。
while(it.hasNext()) {。
System.ou.println(it.next);。
package com.shellway.javase;。
import java.util.ArrayList;。
import java.util.Collection;。
import java.util.HashSet;。
import java.util.Iterator;。
import java.util.List;。
import java.util.Map;。
import java.util.Set;。
import java.util.TreeMap;。
import org.junit.Test;。
public class TestCollection {。
public static void print(Collection<? extends Object> c){。
Iterator<? extends Object> it = c.iterator();。
while (it.hasNext()) {。
Object object = (Object) it.next();。
System.out.println(object);。
}
}
@Test
public void demo1(){。
Set<String> set = new HashSet<String>();。
set.add("AAA");。
set.add("BBB");。
set.add("CCC");。
print(set);。
//Set的第一种遍历方式:利用Iterator。
Iterator<String> it1 = set.iterator();。
for (String ss : set) {。
System.out.println(ss);。
}
//Set的第一种遍历方式:利用foreach。
for (String sss : set) {。
System.out.println(sss);。
}
List<String> list = new ArrayList<String>();。
list.add("DDDDD");。
list.add("EEEEE");。
list.add("FFFFF");。
print(list);。
//List的第一种遍历方式:因为list有顺序,利用size()和get()方法获取。
for (int i = 0; i < list.size(); i++) {。
System.out.println(list.get(i));。
}
//List的第二种遍历方式:利用Iterator。
Iterator<String> it = list.iterator();。
while (it.hasNext()) {。
System.out.println(it.next());。
}
//List的第三种遍历方式:利用foreach。
for (String s2 : list) {。
System.out.println(s2);。
}
Map<String,String> map = new TreeMap<String, String>();。
map.put("Jerry", "10000");。
map.put("shellway", "20000");。
map.put("Kizi", "30000");。
print(map.entrySet());。
//Map的第一种遍历方式:先获得key,再获得值value。
Set<String> sett = map.keySet();。
for (String s : sett) {。
System.out.println(s+":"+map.get(s));。
}
//Map的第二种遍历方式:获得键值对。
for (Map.Entry<String, String> entry : map.entrySet()) {。
System.out.println(entry.getKey()+" : "+entry.getValue());。
}
}
使用泛型对集合对象进行类型安全检查和遍历。
list集合的遍历3种方法:
[java] view plaincopy。
package com.sort;。
import java.util.ArrayList; 。
import java.util.Iterator; 。
import java.util.List;。
/**
* list的三种遍历
* @author Owner。
*/
public class ListTest {。
public static void main(String[] args) {。
List<String> list = new ArrayList<String>();。
list.add("a");
list.add("b");
list.add("c");
list.add("c");//可添加重复数据。
//遍历方法一
for(Iterator<String> iterator = list.iterator();iterator.hasNext();){。
String value = iterator.next();。
System.out.println(value);。
//遍历方法二
for(String value : list){。
System.out.println(value);。
//遍历方法三
for(int i=0;i<list.size();i++){。
System.out.println(list.get(i));。
}
}
三种遍历的比较分析:
方法一遍历:
执行过程中会进行数据锁定, 性能稍差, 同时,如果你想在循环过程中去掉某个元素,只能调用it.remove方法。
方法二遍历:
内部调用第一种
方法三遍历:
内部不锁定, 效率最高, 但是当写多线程时要考虑并发操作的问题。
List接口的两种主要实现类ArrayList和LinkedList都可以采用这样的方法遍历。
关于ArrayList与LinkedList的比较分析。
a) ArrayList底层采用数组实现,LinkedList底层采用双向链表实现。
b) 当执行插入或者删除操作时,采用LinkedList比较好。
c) 当执行搜索操作时,采用ArrayList比较好。
常用的List集合, 可以使用下面几种方式进行遍历。
参考代码
import java.util.ArrayList;。
import java.util.Iterator;。
public class Test {。
public static void main(String[] args) {。
ArrayList<Integer> list = new ArrayList<Integer>();。
list.add(5);
list.add(8);
list.add(9);
//方案一 推荐 .简洁
for (Integer e : list) {。
System.out.print(e + ",");。
}
//方案二
for (int i = 0; i < list.size(); i++) {。
System.out.println(list.get(i));。
}
//方案三
Iterator<Integer> it = list.iterator();。
while (it.hasNext()) {。
System.out.println(it.next());。
}
}
原文地址:http://www.qianchusai.com/list%E9%81%8D%E5%8E%86%E7%9A%84%E5%87%A0%E7%A7%8D%E6%96%B9%E5%BC%8F.html