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

質問編集履歴

6

2019/05/07 13:09

投稿

lupus_dingo
lupus_dingo

スコア257

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 Vo {
28
+ class After {
14
29
  private Parent parent;
15
30
  private List<ChildA> childA;
16
31
  private List<ChildB> childB;

5

2019/05/07 13:09

投稿

lupus_dingo
lupus_dingo

スコア257

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

2019/05/07 12:55

投稿

lupus_dingo
lupus_dingo

スコア257

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

2019/05/07 12:16

投稿

lupus_dingo
lupus_dingo

スコア257

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

2019/05/07 12:15

投稿

lupus_dingo
lupus_dingo

スコア257

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

2019/05/07 12:14

投稿

lupus_dingo
lupus_dingo

スコア257

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(ObjA::getId));
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ごとにループ処理を行うとうことです。