[過去ログ] スレ立てるまでもない質問はここで 162匹目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
205
(6): (ワッチョイ 8901-Tk+f) 2022/10/30(日)15:34 ID:/Ug7BB0x0(1/2) AAS
データを管理するリストがあって、
リスト内のデータを名前順とか、番号順とか目的によってソートをしたいのですが、
データ同士の比較関数はデータクラス側に実装すべき?
リストクラス側に実装すべき?
208: (ワッチョイ 937c-HLP5) 2022/10/30(日)18:20 ID:d1FOMSru0(2/2) AAS
>>205
DBに入れてSQLでorder byじゃダメなのか?
213
(1): (ワッチョイ 1301-pRvw) 2022/10/30(日)22:16 ID:2N6ePwSn0(1) AAS
>>205
普通はデータクラスだろうな

>>210
リスト云々の話にSQLとか俺もお前はあたおかだと思わざるを得ない
216: (ワッチョイ 694f-8V2j) 2022/10/30(日)22:48 ID:xFkuQiwq0(2/4) AAS
>>205
Ruby では何で比較したいのか、sort_by で指定する。
下は、列0 と列1 で比較

ary = [ [ "う", 55 ], [ "い", 99 ], [ "あ", 11 ] ]

p ary.sort_by{ |row| row[0] }
p ary.sort_by{ |row| row[1] }

出力
[["あ", 11], ["い", 99], ["う", 55]]
[["あ", 11], ["う", 55], ["い", 99]]
220: (ワッチョイ 8bb0-iO6U) 2022/10/30(日)23:34 ID:5qpGtRvc0(1) AAS
>>205
データともリストとも別のソートアルゴリズムと比較述語に分離するのが一番きれい。
270
(8): (ワッチョイ 9301-82y5) 2022/10/31(月)16:10 ID:waG8H6yo0(1) AAS
C#ならIComparableとIComparer(もしくはComparer)だからComparisonじゃないよってことでしょ
JavaならComparableとComparator

でも>>205の例ならリストクラス側にsortByName()とかsortById()とか実装して
ラムダ的なやつ使って比較関数はその場で定義しとけば十分だと思う
リストクラス以外のところで同じ比較関数群を使いたいなら切り出せばいい

データクラスに実装するのはそのクラスに属するオブジェクト同士の自然な順序を定義しておきたいとき
例えば地区順といった場合に使う側は地区IDの順なのか地区名の辞書順なのかそれ以外なのかを特に意識せず
「地区」の昇順・降順だけを意識して使うような場合
274: (ワッチョイ 1301-pRvw) 2022/10/31(月)16:57 ID:gNe27yrb0(15/18) AAS
>>270
> でも>>205の例ならリストクラス側にsortByName()とかsortById()とか実装してラムダ的なやつ使って比較関数はその場で定義しとけば十分だと思う
名前の比較は色々要求されそうなのでデータクラス側かと思ったけど単純な文字コード順で良いならリストクラスでもいいね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 1.822s*