List、Set、Map、Queue、Deque、Stack遍历方式总结

List、Set、Map、Queue、Deque、Stack遍历方式总结,第1张

1、List集合(允许重复,有序) 遍历方式:

(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
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/921209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存