Java集合中的遍历(List Set Queue Deque Stack Map)

List的遍历:

  1. 最基本的遍历方法,用for循环根据索引配合get(int)方法遍历,使用List集合的size()方法。但是这种方式遍历不推荐,因为代码复杂,并且get(int)方法只有在ArrayList的实现是高效的,换成LinkedList后,索引越大,访问速度越慢。
  • import java.util.Arrays;
    import java.util.List;
    
    public class Main {
    	public static void main(String[] args) {
    		List<String> list = Arrays.asList("周一","周二","周三","周四","周五");
    		for(int i =0 ;i<list.size();i++) {
    			String s = list.get(i);
    			System.out.println(s);
    		}
    	}
    }
    

    结果为:

  • 2. 使用迭代器Iterator遍历:直接根据List集合的自动遍历,Iterator对象知道如何遍历一个List,并且不同的List类型,返回Iterator对象实现也是不同的,但是总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素

  • import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    
    public class Main {
    	public static void main(String[] args) {
    		List<String> list = Arrays.asList("周一","周二","周三","周四","周五");
    		for(Iterator<String> it= list.iterator();it.hasNext();) {
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    }
    

  • 结果为

  •  

  • 3.由于Iterator遍历常用,所以在Java中的for each循环本身就可以帮助我们使用Iterator遍历但这种方法不能对某一个元素进行操作(这种方法在遍历数组和Map集合的时候同样适用)

  • import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    
    public class Main {
    	public static void main(String[] args) {
    		List<String> list = Arrays.asList("周一","周二","周三","周四","周五");
    		for(String s : list) {
    			System.out.println(s);
    		}
    	}
    }

    结果为:

  •  

    Set的遍历 :

  • 1.  使用迭代器Iterator遍历,总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素
  • package com.my;
    
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Main {
    	public static void main(String[] args) {
    		Set<String> set = new HashSet<String>();
    		set.add("周一");
    		set.add("周二");
    		set.add("周三");
    		set.add("周四");
    		set.add("周五");
    		for(Iterator<String> it = set.iterator();it.hasNext();) {
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    }

    由于Set无序 结果为:

  •  2.由于Iterator遍历常用,所以在Java中的for each循环本身就可以帮助我们使用Iterator遍历

  • package com.my;
    
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Main {
    	public static void main(String[] args) {
    		Set<String> set = new HashSet<String>();
    		set.add("周一");
    		set.add("周二");
    		set.add("周三");
    		set.add("周四");
    		set.add("周五");
    		for(String s : set) {
    			System.out.println(s);
    		}
    	}
    }
    

    结果为:

  •  Queue的遍历:

  • 1.  使用迭代器Iterator遍历,总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素
  • ​
    package com.my1;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.Queue;
    
    public class Main {
    	public static void main(String[] args) {
    		Queue<String> queue = new LinkedList<String>();
    		queue.offer("周一");
    		queue.offer("周二");
    		queue.offer("周三");
    		queue.offer("周四");
    		queue.offer("周五");
    		for(Iterator<String> it = queue.iterator();it.hasNext();) {
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    }
    
    ​

    结果为:

  • 2.Java中的for each循环本身就可以帮助我们使用Iterator遍历

  • package com.my1;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.Queue;
    
    public class Main {
    	public static void main(String[] args) {
    		Queue<String> queue = new LinkedList<String>();
    		queue.offer("周一");
    		queue.offer("周二");
    		queue.offer("周三");
    		queue.offer("周四");
    		queue.offer("周五");
    		for(String s :queue) {
    			System.out.println(s);
    		}
    	}
    }
    

    结果为:

  • 3.通过isEmpty()方法 判断Queue是否为空,调用poll()方法取队首元素并删除进行遍历输出。

  • ​
    package com.my1;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.Queue;
    
    public class Main {
    	public static void main(String[] args) {
    		Queue<String> queue = new LinkedList<String>();
    		queue.offer("周一");
    		queue.offer("周二");
    		queue.offer("周三");
    		queue.offer("周四");
    		queue.offer("周五");
    		while(!queue.isEmpty()) {
    			System.out.println(queue.poll());
    		}
    	}
    }
    
    ​

    结果为:

  • Deque的遍历:

  • 1.  使用迭代器Iterator遍历,总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素
  • ​
    package com.my2;
    
    import java.util.Deque;
    import java.util.Iterator;
    import java.util.LinkedList;
    
    public class Main {
    	public static void main(String[] args) {
    		Deque<String> deque = new LinkedList<String>();
    		deque.offer("周一");
    		deque.offer("周二");
    		deque.offer("周三");
    		deque.offer("周四");
    		deque.offer("周五");
    		for(Iterator<String> it = deque.iterator();it.hasNext();) {
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    	}
    
    ​

    结果为:

  • 2.Java中的for each循环本身就可以帮助我们使用Iterator遍历
  • package com.my2;
    
    import java.util.Deque;
    import java.util.LinkedList;
    
    public class Main {
    	public static void main(String[] args) {
    		Deque<String> deque = new LinkedList<String>();
    		deque.offer("周一");
    		deque.offer("周二");
    		deque.offer("周三");
    		deque.offer("周四");
    		deque.offer("周五");
    		for(String s :deque) {
    			System.out.println(s);
    		}
    	}
    }

    结果为

  • Stack的遍历:

  • 1.1.  使用迭代器Iterator遍历,总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素
  • package com.my3;
    
    import java.util.Iterator;
    import java.util.Stack;
    
    public class Main {
    	public static void main(String[] args) {
    		Stack<String> stack = new Stack<String>();
    		stack.push("周一");
    		stack.push("周二");
    		stack.push("周三");
    		stack.push("周四");
    		stack.push("周五");
    		for(Iterator<String> it = stack.iterator();it.hasNext();) {
    			String s = it.next();
    			System.out.println(s);
    		}
    	}
    }

    结果为:

  • 2.Java中的for each循环本身就可以帮助我们使用Iterator遍历

  • package com.my3;
    
    import java.util.Iterator;
    import java.util.Stack;
    
    public class Main {
    	public static void main(String[] args) {
    		Stack<String> stack = new Stack<String>();
    		stack.push("周一");
    		stack.push("周二");
    		stack.push("周三");
    		stack.push("周四");
    		stack.push("周五");
    		for(String s : stack) {
    			System.out.println(s);
    		}
    	}
    }
    

    结果为:

  • 3.通过isEmpty()方法 判断Stack是否为空,调用pop()方法取队首元素并删除进行遍历输出。

  • package com.my3;
    
    import java.util.Iterator;
    import java.util.Stack;
    
    public class Main {
    	public static void main(String[] args) {
    		Stack<String> stack = new Stack<String>();
    		stack.push("周一");
    		stack.push("周二");
    		stack.push("周三");
    		stack.push("周四");
    		stack.push("周五");
    		while(!stack.isEmpty()) {
    			System.out.println(stack.pop());
    		}
    	}
    }
    

    结果为:

  •  Map的遍历:

  • 1.  使用迭代器Iterator遍历,总有最高的访问效率Iterator对象有两个方法分别是boolean hasNext()判断是否有下一个元素E next()返回下一个元素
  • package com.my4;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class Main {
    	public static void main(String[] args) {
    		Map<String, Integer> map = new HashMap<String, Integer>();
    		map.put("周一", 1);
    		map.put("周二", 2);
    		map.put("周三", 3);
    		map.put("周四", 4);
    		map.put("周五", 5);		 
    		Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();		 
    		while (it.hasNext()) {
    		    Map.Entry<String, Integer> entry = it.next();		 
    		    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
    		 
    		}
    	}
    }
    
    

    结果为:

  •  2.Java中的for each循环本身就可以帮助我们使用Iterator遍历

    package com.my4;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class Main {
    	public static void main(String[] args) {
    		Map<String, Integer> map = new HashMap<String, Integer>();
    		map.put("周一", 1);
    		map.put("周二", 2);
    		map.put("周三", 3);
    		map.put("周四", 4);
    		map.put("周五", 5);		 		 
    		for (Map.Entry<String, Integer> entry : map.entrySet()) {
    		    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());		 
    		}
    	}
    }
    

    结果为:

  • 3在for-each循环中分别遍历keysvalues。

    package com.my4;
    
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    
    public class Main {
    	public static void main(String[] args) {
    		Map<String, Integer> map = new HashMap<String, Integer>();
    		map.put("周一", 1);
    		map.put("周二", 2);
    		map.put("周三", 3);
    		map.put("周四", 4);
    		map.put("周五", 5);		 		 		 
    		for (String key : map.keySet()) {
    		 
    		    System.out.println("Key = " + key);
    		 
    		}
    		for (Integer value : map.values()) {
    		 
    		    System.out.println("Value = " + value);
    		 
    		}
    	}
    }
    
    

    结果为:

  •  

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值