java关于集合的遍历与增强for循环(foreach)的使用

java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。

许多情况需要我们遍历出集合中的元素,并做相应的处理。

下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。

关于List与Set类型集合的遍历:

 1 import java.util.ArrayList;
 2 import java.util.HashSet;
 3 import java.util.Iterator;
 4 import java.util.List;
 5 import java.util.Set;
 6
 7 public class ListAndSetTest {
 8
 9     public static void main(String[] args) {
10         // List集合的遍历
11         listTest();
12         // Set集合的遍历
13         setTest();
14     }
15
16     private static void setTest() {
17         Set<String> set = new HashSet<String>();
18         set.add("JAVA");
19         set.add("C");
20         set.add("C++");
21         // 重复的加不进去。
22         set.add("JAVA");
23         set.add("JAVASCRIPT");
24
25         //set集合遍历方法1,使用iterator
26         Iterator<String> it = set.iterator();
27         while (it.hasNext()) {
28             String value = it.next();
29             System.out.println(value);
30         }
31
32         //set集合遍历方法2,使用增强for循环。
33         for(String s: set){
34             System.out.println(s);
35         }
36     }
37
38     // 遍历list集合
39     private static void listTest() {
40         List<String> list = new ArrayList<String>();
41         list.add("java111");
42         list.add("java222");
43         list.add("java333");
44         list.add("java444");
45         list.add("java555");
46
47         // 遍历方式1 ,使用iterator
48         Iterator<String> it = list.iterator();
49         while (it.hasNext()) {
50             String value = it.next();
51             System.out.println(value);
52         }
53
54         // 遍历方法2 , 使用传统for循环进行遍历。
55         for (int i = 0, size = list.size(); i < size; i++) {
56             String value = list.get(i);
57             System.out.println(value);
58         }
59
60         // 遍历方法3 , 使用增强for循环进行遍历。
61         for (String value : list) {
62             System.out.println(value);
63         }
64     }
65 }

关于Map类型集合的遍历,keySet()与entrySet()方法:

 1 //增强For循环
 2 public class MapTest {
 3
 4     public static void main(String[] args) {
 5         // 创建一个HashMap对象,并加入了一些键值对。
 6         Map<String, String> maps = new HashMap<String, String>();
 7         maps.put("111", "java111");
 8         maps.put("222", "java222");
 9         maps.put("333", "java333");
10         maps.put("444", "java444");
11         maps.put("555", "java555");
12
13         // 传统的遍历map集合的方法1; keySet()
14         //traditionalMethod1(maps);
15         // 传统的遍历map集合的方法2; entrySet()
16         //traditionalMethod2(maps);
17         // 使用增强For循环来遍历map集合方法1; keySet()
18         //strongForMethod1(maps);
19         // 使用增强For循环来遍历map集合方法2; entrySet()
20         strongForMethod2(maps);
21     }
22
23     private static void strongForMethod2(Map<String, String> maps) {
24         Set<Entry<String, String>> set = maps.entrySet();
25         for (Entry<String, String> entry : set) {
26             String key = entry.getKey();
27             String value = entry.getValue();
28             System.out.println(key + " : " + value);
29         }
30     }
31
32     private static void strongForMethod1(Map<String, String> maps) {
33         Set<String> set = maps.keySet();
34         for (String s : set) {
35             String key = s;
36             String value = maps.get(s);
37             System.out.println(key + " : " + value);
38         }
39     }
40
41     // 使用entrySet()方法,获取maps集合中的每一个键值对,
42     private static void traditionalMethod2(Map<String, String> maps) {
43         Set<Map.Entry<String, String>> sets = maps.entrySet();
44         // 取得迭代器遍历出对应的值。
45         Iterator<Entry<String, String>> it = sets.iterator();
46         while (it.hasNext()) {
47             Map.Entry<String, String> entry = (Entry<String, String>) it.next();
48             String key = entry.getKey();
49             String value = entry.getValue();
50             System.out.println(key + " : " + value);
51         }
52     }
53
54     // 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。
55     private static void traditionalMethod1(Map<String, String> maps) {
56         Set<String> sets = maps.keySet();
57         // 取得迭代器遍历出对应的值。
58         Iterator<String> it = sets.iterator();
59         while (it.hasNext()) {
60             String key = it.next();
61             String value = maps.get(key);
62             System.out.println(key + " : " + value);
63         }
64     }
65 }

原文地址:https://www.cnblogs.com/Pjson/p/8419663.html

时间: 2024-10-05 04:06:40

java关于集合的遍历与增强for循环(foreach)的使用的相关文章

Java重要技术(3)语法之增强for循环

1.1. 增强for循环 增强for循环可以在某些时候简化对数组和集合的遍历.增强for循环需要集合实现了Iterable接口. public static void main(String[] args) { //遍历数组 for(String s : args){ System.out.println(s); } ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(1); arrayLis

JAVA学习--集合的遍历

1 @Test 2 public void testFor3(){ 3 String[] str = new String[]{"AA","BB","DD"}; 4 for(String s : str){ 5 s = "MM";//此处的s是新定义的局部变量,其值的修改不会对str本身造成影响. 6 System.out.println(s); 7 } 8 9 for(int i = 0;i < str.length;

Java的Iterator迭代器补充,增强for循环,泛型,List接口,set接口

1.Iterator迭代器:(1)类型转换异常:ClassCastException:集合中存放的是多个对象时,在强转时会出现: package com.oracle.demo01; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class demo01 { public static void main(String[] args) { method03();

Java中的增强 for 循环 foreach

foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理.能够提高性能,并减少代码出错的几率.在 Java 中还有比如 泛型.自动拆箱.自动装箱.内部类.枚举等等. foreach 是用来对数组或者集合进行遍历的语法.具体语法如下: 1 2 3 for(元素类型 ele : 数组名/Iterable 实例){   } 下面我们用 foreach 来对数组和一个集合进行遍历: 1 2 3 4 5 6

Java之集合Map遍历

/** * 1.尝试Map<Boy,ArrayList<GirlFriend>> * 2.尝试Map<Student,HashSet<Book>> * 3.尝试ArrayList(你看过的电视剧)<ArrayList<Role人物>> * 4.假如有以下email数据"[email protected],[email protected],[email protected]"现需要把email中的用户部分和邮件地址

集合并发修改异常-增强for循环,或者迭代器遍历的时候不可修改值

直接上代码: 无意间发现的://这个方法本身是为后面的集合去掉前面集合的重复数据一直报错,并发修改异常,仔细看mainList正在迭代循环,然后我进行了remove操作,这个时候就会报这个错.故:总结出了标题的结论public static List<GcallModel> distinctList(List<GcallModel> list, List<GcallModel> mainList){ for (GcallModel obj : mainList) { b

JAVA学习笔记-二分法排序(增强for循环)

package MyErFenPaiXu; public class Mycode { public static void main(String[] args){ int[] a ={18,63,25,46,3,0,99,1,2}; for(int j=0;j<a.length-1;j++){ //这里的意思为不断的比较,次数只要不小于5次就能遍历出想要的结果. for(int i=0;i<a.length-1-j;i++){ //遍历一次,一个大数会被移到最后的位置. if(a[i]&g

增强for循环 -- foreach循环

1  作用 简化迭代器的书写格式.(注意:foreach循环的底层还是使用了迭代器遍历.) 2  适用范围 如果是实现了Iterable接口的对象或者是数组对象都可以使用foreach循环. 3  格式 for(数据类型 变量名 :遍历的目标){ } 示例: 1 public static void main(String[] args) { 2 HashSet<String> set = new HashSet<>(); 3 set.add("张三"); 4

Java 实例 - 集合遍历

List与Set类型集合的遍历 1 import java.util.ArrayList; 2 import java.util.HashSet; 3 import java.util.Iterator; 4 import java.util.List; 5 import java.util.Set; 6 7 public class Main { 8 9 public static void main(String[] args) { 10 // List集合的遍历 11 listTest()