回答編集履歴
8
図の間違い
test
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
ですから listA を操作した後で sampleLists の内容を表示すると、その時の listA の内容が出てくることになります。
|
10
10
|
逆にいうと、listA を入れた sampleLists の要素のリストに add したりする(`sampleLists.get(0).add("zzz");`)と listA にも変化が現れるいうことです。
|
11
11
|
|
12
|
-
![オブジェクト間参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/f
|
12
|
+
![オブジェクト間参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/b8f15ff4-a3d6-42a7-aa1a-b7df130e8db0.png)
|
13
13
|
青い矢印は全て参照です。
|
14
14
|
① `List<ArrayList<String>> sampleLists = new ArrayList<>();`
|
15
15
|
② `ArrayList<String> listA = new ArrayList<>();`
|
7
修正
test
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
逆にいうと、listA を入れた sampleLists の要素のリストに add したりする(`sampleLists.get(0).add("zzz");`)と listA にも変化が現れるいうことです。
|
11
11
|
|
12
12
|
![オブジェクト間参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/f6c6a263-79ab-49cd-b4ae-766fe55182d1.png)
|
13
|
-
青い
|
13
|
+
青い矢印は全て参照です。
|
14
14
|
① `List<ArrayList<String>> sampleLists = new ArrayList<>();`
|
15
15
|
② `ArrayList<String> listA = new ArrayList<>();`
|
16
16
|
③ `listA.add(listB.get(i));` (i=0)
|
6
追加
test
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
というのは "AA" では無く listA そのものが対象です。(listA の "AA" を入れるなら `listA.add(listB.get(i))` と同様に listA から get するはずです。)
|
8
8
|
listA はオブジェクトですので sampleLists に入るのは listA への参照であり、それは「sampleLists の要素を通して listA が見える」という感じです。
|
9
9
|
ですから listA を操作した後で sampleLists の内容を表示すると、その時の listA の内容が出てくることになります。
|
10
|
+
逆にいうと、listA を入れた sampleLists の要素のリストに add したりする(`sampleLists.get(0).add("zzz");`)と listA にも変化が現れるいうことです。
|
10
11
|
|
11
12
|
![オブジェクト間参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/f6c6a263-79ab-49cd-b4ae-766fe55182d1.png)
|
12
13
|
青い線は全て参照です。
|
5
変数名間違い直しや図変更、説明追加
test
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
>listAにlistBの”AA”を格納した後に、ifブロックを抜けsampleListにlistAの"AA"を格納したのちlistAにlistBの"BB"を格納しているのですが、その結果、sampleListになにも格納していないにも関わらず、listAに格納したはずの"BB"がsampleListにも格納されていました
|
2
2
|
|
3
|
-
listA は `ArrayList<String>` ですが sampleList は `List<ArrayList<String>>` です。従って
|
3
|
+
listA は `ArrayList<String>` ですが sampleLists は `List<ArrayList<String>>` です。従って
|
4
4
|
>sampleListにlistAの"AA"を格納
|
5
5
|
と言われている
|
6
6
|
>sampleLists.add(listA);
|
7
|
-
というのは "AA" では無く listA そのもの
|
7
|
+
というのは "AA" では無く listA そのものが対象です。(listA の "AA" を入れるなら `listA.add(listB.get(i))` と同様に listA から get するはずです。)
|
8
|
-
listA はオブジェクトですので sampleList に入るのは listA への参照であり、それは「sampleList を通して listA が見える」という感じです。
|
8
|
+
listA はオブジェクトですので sampleLists に入るのは listA への参照であり、それは「sampleLists の要素を通して listA が見える」という感じです。
|
9
|
-
ですから listA を操作した後で sampleList の内容を表示
|
9
|
+
ですから listA を操作した後で sampleLists の内容を表示すると、その時の listA の内容が出てくることになります。
|
10
|
+
|
10
|
-
![イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/2
|
11
|
+
![オブジェクト間参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/f6c6a263-79ab-49cd-b4ae-766fe55182d1.png)
|
11
12
|
青い線は全て参照です。
|
13
|
+
① `List<ArrayList<String>> sampleLists = new ArrayList<>();`
|
14
|
+
② `ArrayList<String> listA = new ArrayList<>();`
|
15
|
+
③ `listA.add(listB.get(i));` (i=0)
|
16
|
+
④ `sampleLists.add(listA);`
|
17
|
+
⑤ `listA.add(listB.get(i));` (i=1)
|
18
|
+
に当たります。
|
19
|
+
この後に listA に別のオブジェクト(の参照)を入れても (`listA = new ArrayList<>();`) ② が他を向くだけで sampleLists の指すオブジェクトは変わりません。
|
4
図を差し替え
test
CHANGED
@@ -7,4 +7,5 @@
|
|
7
7
|
というのは "AA" では無く listA そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))` と同様に listA から get するはずです。)
|
8
8
|
listA はオブジェクトですので sampleList に入るのは listA への参照であり、それは「sampleList を通して listA が見える」という感じです。
|
9
9
|
ですから listA を操作した後で sampleList の内容を表示してみれば、 そのままその時の listA の内容が表示されます。
|
10
|
-
![
|
10
|
+
![イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/223edb18-18f5-49e2-abd4-229faf363216.png)
|
11
|
+
青い線は全て参照です。
|
3
修正
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
>sampleListにlistAの"AA"を格納
|
5
5
|
と言われている
|
6
6
|
>sampleLists.add(listA);
|
7
|
-
というのは "AA" では無く listA そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))`
|
7
|
+
というのは "AA" では無く listA そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))` と同様に listA から get するはずです。)
|
8
8
|
listA はオブジェクトですので sampleList に入るのは listA への参照であり、それは「sampleList を通して listA が見える」という感じです。
|
9
9
|
ですから listA を操作した後で sampleList の内容を表示してみれば、 そのままその時の listA の内容が表示されます。
|
10
10
|
![sampleList参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/bc9f904b-3fec-4f00-91bb-f73e3fe22f45.png)
|
2
マークダウン修正
test
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
>listAにlistBの”AA”を格納した後に、ifブロックを抜けsampleListにlistAの"AA"を格納したのち
|
2
|
-
listAにlistBの"BB"を格納しているのですが、その結果、sampleListになにも格納していないにも関わらず、listAに格納したはずの"BB"がsampleListにも格納されていました
|
1
|
+
>listAにlistBの”AA”を格納した後に、ifブロックを抜けsampleListにlistAの"AA"を格納したのちlistAにlistBの"BB"を格納しているのですが、その結果、sampleListになにも格納していないにも関わらず、listAに格納したはずの"BB"がsampleListにも格納されていました
|
3
2
|
|
4
3
|
listA は `ArrayList<String>` ですが sampleList は `List<ArrayList<String>>` です。従って
|
5
4
|
>sampleListにlistAの"AA"を格納
|
1
修正、画像追加
test
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
>sampleListにlistAの"AA"を格納
|
6
6
|
と言われている
|
7
7
|
>sampleLists.add(listA);
|
8
|
-
というのは
|
9
|
-
"AA" では無く listA そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))` のようになるはずです。)
|
8
|
+
というのは "AA" では無く listA そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))` のようになるはずです。)
|
10
9
|
listA はオブジェクトですので sampleList に入るのは listA への参照であり、それは「sampleList を通して listA が見える」という感じです。
|
11
10
|
ですから listA を操作した後で sampleList の内容を表示してみれば、 そのままその時の listA の内容が表示されます。
|
11
|
+
![sampleList参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/bc9f904b-3fec-4f00-91bb-f73e3fe22f45.png)
|