(1)使用for循环根据索引配合get(int)方法遍历(不推荐,get(int)方法只用ArrayList的实现是高效 的;换成Linkedlist后,索引越大,访问速度越慢)
(2)使用迭代器Iterator遍历(通过迭代器Iterator遍历List永远是最高效的)
(3)使用for each循环遍历
代码示例(如下):
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Work01 {
public static void main(String[] args) {
List list = Arrays.asList("北京", "上海", "海南", "杭州", "天津");
// 使用for循环进行遍历
for(int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("------------------------");
// 使用迭代器Iterator进行遍历
for(Iterator it = list.iterator(); it.hasNext();){
String s = it.next();
System.out.println(s);
}
System.out.println("------------------------");
// 使用for each循环进行遍历
for(String s : list) {
System.out.println(s);
}
}
}
2.Set集合
HashSet:无序,值唯一,使用HashMap作为存储结构
TreeSet:自动排序,值唯一,使用TreeMap作为存储结构
遍历方式:
(1)使用for each循环遍历
(2)使用迭代器Iterator遍历
示例代码(如下):
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
public class Work02 {
public static void main(String[] args) {
Set set1 = new HashSet();
set1.add("夕阳");
set1.add("晚霞");
set1.add("流星");
set1.add("黄昏");
// 使用for each循环遍历
for(String s : set1) {
System.out.println(s);
}
System.out.println("-------------------------");
// 使用Iterator迭代器遍历
for(Iterator it = set1.iterator(); it.hasNext();) {
String s = it.next();
System.out.println(s);
}
Set set2 = new TreeSet();
set2.add("red");
set2.add("blue");
set2.add("green");
set2.add("pink");
// 使用for each循环遍历
for(String s : set2) {
System.out.println(s);
}
System.out.println("-------------------------");
// 使用Iterator迭代器遍历
for(Iterator it = set2.iterator(); it.hasNext();) {
String s = it.next();
System.out.println(s);
}
}
}
3.Map集合
遍历方式:
(1)遍历key使用for each循环遍历Map示例的KeySet()方法返回的Set集合
(2)同时遍历Key和value使用for each循环Map对象的entrySet()集合
(3)使用迭代器Iterator遍历
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Work03 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("red", 123);
map.put("blue", 456);
map.put("black", 7894);
// 使用for each遍历KeySet()
for(String key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key + "=" + value);
}
System.out.println("--------------------------------");
// 使用for each遍历entrySet(),直接获取key-value键值对
for(Map.Entry entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + "=" + value);
}
System.out.println("--------------------------------");
// 使用Iterator迭代器遍历
for(Iterator it = map.keySet().iterator(); it.hasNext();) {
String s = it.next();
System.out.println(s + "=" + map.get(s));
}
}
}
4、Queue队列(先进先出 FIFO)
遍历方式:
(1)使用for each循环遍历
(2)使用迭代器Iterator遍历
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Queue;
public class Work04 {
public static void main(String[] args) {
Queue queue = new LinkedList();
queue.offer("张三");
queue.offer("李四");
queue.offer("王五");
// 使用for each循环遍历
for(String s : queue) {
System.out.println(s);
}
System.out.println("-------------------------");
// 使用迭代器Iterator遍历
for(Iterator it = queue.iterator(); it.hasNext();){
String s = it.next();
System.out.println(s);
}
}
}
5.Deque双端队列
遍历方式:
(1)使用for each循环遍历
(2)使用迭代器Iterator遍历
(3)使用while循环遍历
import java.util.Deque;
import java.util.Iterator;
import java.util.LinkedList;
public class Work05 {
public static void main(String[] args) {
Deque deque = new LinkedList();
deque.offerFirst("A"); // 将元素添加至队首
deque.offerFirst("B");
deque.offerLast("C"); // 将元素添加至队尾
deque.offerFirst("D");
deque.offerLast("E");
// for each循环遍历
for(String s : deque) {
System.out.println(s);
}
System.out.println("-----------------------------");
// 使用迭代器Iterator遍历
for(Iterator it = deque.iterator(); it.hasNext();){
String s = it.next();
System.out.println(s);
}
System.out.println("-----------------------------");
// while循环遍历
while(deque.peek() != null) { // peek 获取元素但不删除
System.out.println(deque.poll());
}
}
}
6.Stack栈(先进后出 LIFO)
遍历方式:
(1)使用for each循环遍历
(2)使用迭代器Iterator遍历
(3)使用while循环遍历
import java.util.Iterator;
import java.util.Stack;
public class Work06 {
public static void main(String[] args) {
Stack stack = new Stack();
stack.push("A1"); // 入栈
stack.push("A2");
stack.push("A3");
stack.push("A4");
// for each循环遍历
for(String s : stack) {
System.out.println(s); // A1 A2 A3 A4
}
System.out.println("----------------------------");
// 使用迭代器Iterator遍历
for(Iterator it = stack.iterator(); it.hasNext();){
String s = it.next();
System.out.println(s); // A1 A2 A3 A4
}
System.out.println("----------------------------");
// while循环遍历
while(!stack.isEmpty()) {
System.out.println(stack.pop()); // A4 A3 A2 A1
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)