回答編集履歴

8

図の間違い

2024/01/06 19:33

投稿

jimbe
jimbe

スコア12729

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/f6c6a263-79ab-49cd-b4ae-766fe55182d1.png)
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

修正

2024/01/06 19:08

投稿

jimbe
jimbe

スコア12729

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

追加

2024/01/06 18:59

投稿

jimbe
jimbe

スコア12729

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

変数名間違い直しや図変更、説明追加

2024/01/06 18:45

投稿

jimbe
jimbe

スコア12729

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 そのものを入れています。(listA の "AA" を入れるなら `listA.add(listB.get(i))` と同様に listA から get するはずです。)
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 の内容を表示してみれば そのままその時の listA の内容が表示されます。
9
+ ですから listA を操作した後で sampleLists の内容を表示すると、その時の listA の内容が出てくることになります。
10
+
10
- ![イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/223edb18-18f5-49e2-abd4-229faf363216.png)
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

図を差し替え

2024/01/06 18:12

投稿

jimbe
jimbe

スコア12729

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
- ![sampleList参照イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/bc9f904b-3fec-4f00-91bb-f73e3fe22f45.png)
10
+ ![イメージ](https://ddjkaamml8q8x.cloudfront.net/questions/2024-01-07/223edb18-18f5-49e2-abd4-229faf363216.png)
11
+ 青い線は全て参照です。

3

修正

2024/01/06 17:47

投稿

jimbe
jimbe

スコア12729

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

マークダウン修正

2024/01/06 17:46

投稿

jimbe
jimbe

スコア12729

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

修正、画像追加

2024/01/06 17:44

投稿

jimbe
jimbe

スコア12729

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)