栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887735.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号