@@ -48,30 +48,45 @@ public class IteratorExample {
48
48
49
49
}
50
50
```
51
- ** 注意:** 当使用Iterator对集合元素进行迭代时,Iterator并不是把集合元素本身传给了迭代变量,而是把集合元素的值传给了迭代变量 (就如同参数传递是值传递,基本数据类型传递的是值,引用类型传递的仅仅是对象的引用变量),所以修改迭代变量的值对集合元素本身没有任何影响 。
51
+ ** 注意:** 当使用Iterator对集合元素进行迭代时,把集合元素的值传给了迭代变量 (就如同参数传递是值传递,基本数据类型传递的是值,引用类型传递的仅仅是对象的引用变量。
52
52
53
53
下面的程序演示了这一点:
54
54
``` java
55
55
public class IteratorExample {
56
- public static void main (String [] args ){
57
- List<String > list = Arrays . asList(" java语言" ," C语言" ," C++语言" );
58
- Iterator<String > iterator = list. iterator();
59
- while (iterator. hasNext()){
60
- String next = iterator. next();// 集合元素的值传给了迭代变量,仅仅传递了对象引用。保存的仅仅是指向对象内存空间的地址
61
- next = " 修改后的" ;
62
- System . out. println(next);
63
-
64
- }
65
- System . out. println(list);
66
- }
67
-
56
+ public static void main (String [] args ) {
57
+ List<MyObject > list = new ArrayList<> ();
58
+ for (int i = 0 ; i < 10 ; i++ ) {
59
+ list. add(new MyObject (i));
60
+ }
61
+
62
+ System . out. println(list. toString());
63
+
64
+ Iterator<MyObject > iterator = list. iterator();// 集合元素的值传给了迭代变量,仅仅传递了对象引用。保存的仅仅是指向对象内存空间的地址
65
+ while (iterator. hasNext()) {
66
+ MyObject next = iterator. next();
67
+ next. num = 99 ;
68
+ }
69
+
70
+ System . out. println(list. toString());
71
+ }
72
+ static class MyObject {
73
+ int num;
74
+
75
+ MyObject (int num ) {
76
+ this . num = num;
77
+ }
78
+
79
+ @Override
80
+ public String toString () {
81
+ return String . valueOf(num);
82
+ }
83
+ }
68
84
}
69
85
```
70
86
输出结果如下:
71
- > 修改后的
72
- > 修改后的
73
- > 修改后的
74
- > [ java语言, C语言, C++语言]
87
+ > [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
88
+ >
89
+ > [ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]
75
90
76
91
下面具体介绍Collection接口的三个子接口Set,List,Queue。
77
92
### 2.Set集合
0 commit comments