teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

5

a

2017/03/31 04:36

投稿

flan
flan

スコア146

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,9 @@
1
1
  JavaのArrayLIstのスレッドセーフについて質問です。
2
+ ---
2
3
  Java SIlver 黒本より
4
+
3
- ////////////////ソース1 /////////////
5
+ ソース1
6
+ ---
4
7
  ```Java
5
8
  Arraylist<String> list = new ArrayList<>();
6
9
 
@@ -18,7 +21,8 @@
18
21
 
19
22
  }
20
23
  ```
21
- ///////////////////ソース2 ////////////////
24
+ ソース2
25
+ ---
22
26
  ```Java
23
27
  Arraylist<String> list = new ArrayList<>();
24
28
 
@@ -41,25 +45,27 @@
41
45
  }
42
46
  ```
43
47
  *クラスの宣言とmainメソッドは省略しました。
48
+
44
- /////////////////////
49
+ ---
45
50
  このソース1の実行した結果として
46
51
  A
47
52
  が出力。
53
+
48
- ///////////////////////
54
+ ---
55
+
49
56
  ソース2は実行時に例外がスローされるとあります。
50
57
  ConcurrentModificationException←これ
51
58
 
59
+
60
+
52
61
  その理由として、ループで読みだしている最中にremoveメソッドを呼び出しているからとあります。
53
- しかし、ソース1でもremoveメソッドを呼び出しているのにソース1では例外がスローされません。これはなぜでしょうか?
62
+ しかし、ソース1でもremoveメソッドを呼び出しているのにソース1では例外がスローされません。**__これはなぜでしょうか?__**
54
63
 
55
64
  私なりの考察。
65
+ ---
56
66
  ソース1では拡張for文2回目のループでremoveメソッドが処理され3買い目のループは要素がなくなり2回目で終わり、残りの要素に影響されない。
57
67
 
58
68
  ソース2では拡張for文3回目のループでremoveメソッドが処理され4回目ループの際の"E"がまだ残っているため要素数の順番に影響があるから?
59
69
 
70
+ ---
60
- よろしくお願いします。
71
+ よろしくお願いします。
61
- ```html
62
- <div id="test">
63
- <p>これはテストです。</p>
64
- </div>
65
- ```

4

2017/03/31 04:36

投稿

flan
flan

スコア146

title CHANGED
File without changes
body CHANGED
@@ -18,8 +18,8 @@
18
18
 
19
19
  }
20
20
  ```
21
-
22
21
  ///////////////////ソース2 ////////////////
22
+ ```Java
23
23
  Arraylist<String> list = new ArrayList<>();
24
24
 
25
25
  list.add("A");
@@ -39,7 +39,7 @@
39
39
  for (String str : list){
40
40
  System.out.println(str);
41
41
  }
42
-
42
+ ```
43
43
  *クラスの宣言とmainメソッドは省略しました。
44
44
  /////////////////////
45
45
  このソース1の実行した結果として

3

2017/03/31 04:28

投稿

flan
flan

スコア146

title CHANGED
File without changes
body CHANGED
@@ -1,6 +1,7 @@
1
1
  JavaのArrayLIstのスレッドセーフについて質問です。
2
2
  Java SIlver 黒本より
3
3
  ////////////////ソース1 /////////////
4
+ ```Java
4
5
  Arraylist<String> list = new ArrayList<>();
5
6
 
6
7
  list.add("A");
@@ -16,8 +17,8 @@
16
17
  }
17
18
 
18
19
  }
20
+ ```
19
21
 
20
-
21
22
  ///////////////////ソース2 ////////////////
22
23
  Arraylist<String> list = new ArrayList<>();
23
24
 

2

2017/03/31 04:28

投稿

flan
flan

スコア146

title CHANGED
File without changes
body CHANGED
@@ -56,4 +56,9 @@
56
56
 
57
57
  ソース2では拡張for文3回目のループでremoveメソッドが処理され4回目ループの際の"E"がまだ残っているため要素数の順番に影響があるから?
58
58
 
59
- よろしくお願いします。
59
+ よろしくお願いします。
60
+ ```html
61
+ <div id="test">
62
+ <p>これはテストです。</p>
63
+ </div>
64
+ ```

1

remove

2017/03/31 04:27

投稿

flan
flan

スコア146

title CHANGED
File without changes
body CHANGED
@@ -49,7 +49,7 @@
49
49
  ConcurrentModificationException←これ
50
50
 
51
51
  その理由として、ループで読みだしている最中にremoveメソッドを呼び出しているからとあります。
52
- しかし、ソース1でも呼び出しているのにソース1では例外がスローされません。これはなぜでしょうか?
52
+ しかし、ソース1でもremoveメソッドを呼び出しているのにソース1では例外がスローされません。これはなぜでしょうか?
53
53
 
54
54
  私なりの考察。
55
55
  ソース1では拡張for文2回目のループでremoveメソッドが処理され3買い目のループは要素がなくなり2回目で終わり、残りの要素に影響されない。