質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

2回答

496閲覧

Java:DBから抜き出した二つのテーブルから、多次元の配列を作成する。

shushu3

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

0クリップ

投稿2022/06/14 15:59

編集2022/06/15 08:42

前提

JAVAのListを作成するところで詰まっています。

実現したいこと

Lists

1{List(id=3,title="tokyo"), 2List(id=5,title="kyoto") 3}

card

1{Card(card_id=1,card_title="study",List_id=3), 2Card(card_id=2,card_title="Reading",List_id=5), 3Card(card_id=3,card_title="Speaking",List_id=5)}

これらの二つの辞書型の配列において、AListの'id'とtaskの'List_id'で結んだ配列を作成したいです。

結果的には以下のようにしたいです。

{[List[id=3,title=tokyo],[Card[card_id=1,task_title=study]]], [List[id=5,title=kyoto,[card[card_id=2,card_title=Reading],card[card_id=3,card_title=Speaking]]}

該当のソースコード

DBに以下の情報が入っており、それを抜き出して多次元の配列に流し込むイメージです。

AList table

sql

1id list_title 23 tokyo 35 kyoto

task table

sql

1card_id card_title list_id 21 study 3 32 Reading 5 43 Speaking 5

Lists.java

@Data public class Lists{ private long id; private string task_title; public long getId(){ return id; } public String getTaskTitle(){ return task_title} }

cards.java

@Data public class cards{ private long id; private string card_title; private string list_id; public void makeSet(){ ????????????????? return ?????} }

補足情報(FW/ツールのバージョンなど)

最終的には、フロントエンドサーバーに

[{"id":"????", "title":"????", "cards":[????,????]}, {"id":"????", "title":"????", "cards":[????,????]}, {"id":"????", "title":"????", "cards":[????,????]},]

目指しているjsonはこんな感じです。

{ "lists": [{ "id": 1, "title": "tokyo", "cards": [ { "card_title": "study" }, ] }, { "id": 2, "title": "kyoto", "cards": [ { "card_title": "Reading" }, { "card_title": "Speaking" }, ] } ] }

のように代入されます。

かなり詰まっているため、何か助言を頂けると大変助かります。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/06/14 20:23

質問されているのは、 java でしょうか、 javascript でしょうか、 SQL でしょうか。
shushu3

2022/06/15 01:13

ご質問ありがとうございます。 今取り組んでいるロジックの部分はjavaです。
jimbe

2022/06/15 06:29

> これらの二つの辞書型の配列において、AListの'id'とtaskの'List_id'で結んだ配列を作成したい データの入っている AList[] と task[] から、 AList をキーとし、 AList.id と一致する List_id を持つ task の配列を値とする Map 、つまり Map<AList, task[]> を作成するということでしょうか? だとすればデータベースもフロントエンドサーバも関係無いですね。 具体的な java のコードレベルで表現して頂けると助かります。
shushu3

2022/06/15 08:37

再度情報を補足させて頂きました! 回答ありがとうございます!とても参考になります。
guest

回答2

0

ベストアンサー

Map は多次元配列ではありませんし辞書型の配列とやらにもなっていませんが、結果の表示から想像で取り合えず書いてみました。

java

1class AList { 2 int id; 3 String title; 4 AList(int id, String title) { 5 this.id = id; 6 this.title = title; 7 } 8 @Override 9 public String toString() { 10 return new StringBuilder("AList") 11 .append("[id=").append(id) 12 .append(",title=").append(title) 13 .append("]").toString(); 14 } 15} 16 17class Task { 18 int task_id; 19 String task_title; 20 int List_id; 21 Task(int task_id, String task_title, int List_id) { 22 this.task_id = task_id; 23 this.task_title = task_title; 24 this.List_id = List_id; 25 } 26 @Override 27 public String toString() { 28 return new StringBuilder("task") 29 .append("[task_id=").append(task_id) 30 .append(",task_title=").append(task_title) 31 .append(",List_id=").append(List_id) 32 .append("]").toString(); 33 } 34} 35 36public class Main { 37 public static void main(String[] args) { 38 AList[] alists = { new AList(3,"tokyo"), new AList(5,"kyoto") }; 39 Task[] tasks = { new Task(1,"study",3), new Task(2,"Reading",5), new Task(3,"Speaking",5) }; 40 41 System.out.println(Arrays.toString(alists)); 42 System.out.println(Arrays.toString(tasks)); 43 System.out.println(); 44 45 Map<AList,Task[]> map = new HashMap<AList,Task[]>(); 46 for(AList alist : alists) { 47 List<Task> list = new ArrayList<>(); 48 for(Task task : tasks) { 49 if(alist.id == task.List_id) list.add(task); 50 } 51 map.put(alist, list.toArray(new Task[list.size()])); 52 } 53 54 System.out.print("{"); 55 boolean first = true; 56 for(Map.Entry<AList,Task[]> entry : map.entrySet()) { 57 if(first) first = false; else System.out.print(","); 58 System.out.print(entry.getKey() + "=" + Arrays.toString(entry.getValue())); 59 } 60 System.out.println("}"); 61 } 62}

実行結果

plain

1[AList[id=3,title=tokyo], AList[id=5,title=kyoto]] 2[task[task_id=1,task_title=study,List_id=3], task[task_id=2,task_title=Reading,List_id=5], task[task_id=3,task_title=Speaking,List_id=5]] 3 4{AList[id=3,title=tokyo]=[task[task_id=1,task_title=study,List_id=3]],AList[id=5,title=kyoto]=[task[task_id=2,task_title=Reading,List_id=5], task[task_id=3,task_title=Speaking,List_id=5]]}

投稿2022/06/15 07:04

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

jimbeさんが回答して頂いたもので、完成していました。

ありがとうございました。

投稿2022/06/15 09:32

編集2022/06/15 09:35
shushu3

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問