List的遍历:
- 最基本的遍历方法,用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循环中分别遍历keys和values。
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); } } }
结果为:
-