おはようございます。
下記のソースを見ていいただきたいのですが、aというリストの中のオブジェクトの"name"と
bというリストの中のオブジェクトの"pname"と比較し、一致したら、リストaの一致した後にデータを差し込みたいと考えております。
記述方法がわからないのが、リストbをみて頂きたいのですが、
Shime("C", "mm")をリストaに差し込んだ後、差し込まれたリストaを利用し、
リストbを比較し、Shime("斎藤", "C")をリストaに差し込まなければいけません。
単純に考えて、リストaとリストbを比較した際に、一致したら、リストaに差し込み、
リストbから削除するといったロジックにするのが良いかと思い、いざ実装をしているのですが、
思い通りの結果の記述ができませんでした。
難しく考えているのかもしれませんが、どうしてもわからないため、皆様のお力を
お借りできればと思っております。
scala
1 var a = Seq(Shime("A", "○"), Shime("B", "☓")) 2 var b = Seq(Shime("伊藤", "A"), Shime("山田", "B"), Shime("C", "mm"), Shime("斎藤", "C")) 3 4 case class Shime(name: String, pname: String) 5 6 // 下記の結果になるようにしたい 7 // 8 // a =Seq( 9 // Shime("A", "○"), 10 // Shime("伊藤", "A"), 11 // Shime("B", "☓"), 12 // Shime("山田", "B"), 13 // Shime("C", "mm"), 14 // Shime("斎藤", "C") 15 // ) 16
大変、お手数をおかけしますが、ご教授よろしくお願いします。
ご指摘をいただきましたので、編集させて頂きます。
仕様があやふやで失礼いたしました。
ご質問いただきました、想定して頂いた内容で認識はあっていると思います。
今回、なぜ、このような投稿をしたかを、記載させて頂きます。
データベースからデータを取得し、指定の並び順、
更新日時でソートしたリストを表示しようと考えております。
単純にデータベース上に、並び順であったり、優先順のフィールドを設けておけば
解決するような内容ですが、データベースから取得したデータの更新頻度が多いため、
すべてのデータに並び順を持たせてしまうと、追加・削除毎に、採番し直す必要があった為、
他の方法を考えておりました。
考えた方法として、並び替えるデータがどのデータの後ろになるのか?を保持したテーブルを用意し、
プログラムで一覧を作成する際に、保持したテーブルを参照しデータの並び替えを行おうと考えております。
scala
1// データベースより取得したリスト 2list = Seq("あ", "い", "う", "え", "お", "か") 3 4// 並び替え対象リスト 5order = Seq(Order("お","あ"), Order("え","お")) 6 7case clase Order( 8value: String, // 挿入する値 9targetValue:String // ターゲットとなる値 10) 11 12// 結果 13newlist = Seq("あ", "お", "え", "い", "う", "か")
処理方法としましては、
1.データを取得(A)
A ... リスト
B ... 並び替え対象リスト
2.リスト(A)を分割
分割条件: リスト(A)のデータが、並び替え対象リスト(B)の"挿入する値"と一致、かつ、ターゲットとなる値が、がリスト(A)に含まれている
A` ... 条件が一致せず残ったリスト
C ... 条件の一致したリスト
3.条件が一致せず残ったデータ(A)を、forなどで1件づつ処理を行い、並び替え対象のデータと一致した場合、Cのリストからデータを取得し、A
に挿入
と考えておりました。
プログラムを組んでうちに、3の段階時点で、"お"のつぎが"え"とならないのではないかと疑問に思い、今回、質問内容をやりたいことのみを記載し質問してしまいました。
難しく考え過ぎているのかもしれませんが、ご教授いただけると幸いです。
お手数をおかけしますが、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/04/13 02:55
2017/04/13 03:11
2017/04/14 01:16 編集
退会済みユーザー
2017/04/13 04:13
退会済みユーザー
2017/04/14 00:49
2017/04/14 01:30