質問編集履歴
6
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,8 +9,23 @@
|
|
9
9
|
かつ変換後mapに対してParentをキーにChildBをマージしたいのですが、レガシーなfor文を使う以外にステップ数を抑えて可読性が上がる方法はないでしょうか?
|
10
10
|
|
11
11
|
```java
|
12
|
+
// 変換前のイメージ
|
13
|
+
class BeforeParent {
|
14
|
+
private Parent parent;
|
15
|
+
private ChildA childA; // 中身はBと同様
|
16
|
+
}
|
17
|
+
class childB {
|
18
|
+
private Integer pk1; // parentのpk
|
19
|
+
private String pk2; // parentのpk
|
20
|
+
private String pk3;
|
21
|
+
private String data1;
|
22
|
+
private String data2;
|
23
|
+
}
|
24
|
+
```
|
25
|
+
|
26
|
+
```java
|
12
27
|
// 変換後のイメージ
|
13
|
-
class
|
28
|
+
class After {
|
14
29
|
private Parent parent;
|
15
30
|
private List<ChildA> childA;
|
16
31
|
private List<ChildB> childB;
|
5
title
CHANGED
File without changes
|
body
CHANGED
@@ -22,4 +22,10 @@
|
|
22
22
|
|
23
23
|
やりたいのは、
|
24
24
|
M:Nのデータを結合して一括抽出した後で、M:Oとなるデータを同様に抽出し、
|
25
|
-
Mごとにループ処理を行うということです。
|
25
|
+
Mごとにループ処理を行うということです。
|
26
|
+
|
27
|
+
追記
|
28
|
+
抽出したデータを編集することはありません(→イミュータブル?)。
|
29
|
+
equalsはオーバーライドせずに、parentが持つ複合キー(全て基本型)それぞれに対してforループ内でequalsチェックする想定でした。
|
30
|
+
|
31
|
+
→ふと、思いましたが、equalsをオンバーライドすれば上記のstreamで行けそう?(^^;
|
4
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,8 +11,7 @@
|
|
11
11
|
```java
|
12
12
|
// 変換後のイメージ
|
13
13
|
class Vo {
|
14
|
-
private Parent
|
14
|
+
private Parent parent;
|
15
|
-
parent;
|
16
15
|
private List<ChildA> childA;
|
17
16
|
private List<ChildB> childB;
|
18
17
|
}
|
3
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,9 +11,10 @@
|
|
11
11
|
```java
|
12
12
|
// 変換後のイメージ
|
13
13
|
class Vo {
|
14
|
-
private Parent
|
14
|
+
private Parent
|
15
|
+
parent;
|
15
|
-
private List<ChildA>;
|
16
|
+
private List<ChildA> childA;
|
16
|
-
private List<ChildB>;
|
17
|
+
private List<ChildB> childB;
|
17
18
|
}
|
18
19
|
|
19
20
|
```
|
2
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,6 +8,16 @@
|
|
8
8
|
このマップのキーをstringからParentにし、
|
9
9
|
かつ変換後mapに対してParentをキーにChildBをマージしたいのですが、レガシーなfor文を使う以外にステップ数を抑えて可読性が上がる方法はないでしょうか?
|
10
10
|
|
11
|
+
```java
|
12
|
+
// 変換後のイメージ
|
13
|
+
class Vo {
|
14
|
+
private Parent;
|
15
|
+
private List<ChildA>;
|
16
|
+
private List<ChildB>;
|
17
|
+
}
|
18
|
+
|
19
|
+
```
|
20
|
+
|
11
21
|
上記のとおり、java8が使用可能です。
|
12
22
|
|
13
23
|
やりたいのは、
|
1
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
以下のようにするとリストから任意のキーでマップに変換できると思います。
|
4
4
|
```java
|
5
|
-
Map<String, List<ChildA>>map=list.stream().collect(Collectors.groupby(
|
5
|
+
Map<String, List<ChildA>>map=list.stream().collect(Collectors.groupby(ChildA::getId));
|
6
6
|
```
|
7
7
|
|
8
8
|
このマップのキーをstringからParentにし、
|
@@ -12,4 +12,4 @@
|
|
12
12
|
|
13
13
|
やりたいのは、
|
14
14
|
M:Nのデータを結合して一括抽出した後で、M:Oとなるデータを同様に抽出し、
|
15
|
-
Mごとにループ処理を行い
|
15
|
+
Mごとにループ処理を行うということです。
|