Scalaのリストを2つのフィールドでソートするには、この例ではlastNameとfirstNameでソートしますか?2つのフィールドでScalaのリストを並べ替えるにはどうすればいいですか?
case class Row(var firstName: String, var lastName: String, var city: String)
var rows = List(new Row("Oscar", "Wilde", "London"),
new Row("Otto", "Swift", "Berlin"),
new Row("Carl", "Swift", "Paris"),
new Row("Hans", "Swift", "Dublin"),
new Row("Hugo", "Swift", "Sligo"))
rows.sortBy(_.lastName)
私はこの
rows.sortBy(_.lastName + _.firstName)
のようなものを試してみたが、それは動作しません。だから私は良いと簡単な解決策に興味があります。
lastNameで並べ替えを行い、firstNameで自然並べ替えをしたい場合はどうすればいいですか? –
@SachinK: 'Row'クラス用に独自の' Ordering'を作成し、 'rows.sorted(customOrdering)'のような 'sorted'メソッドでそれを使用する必要があります。 'Tuple2'にカスタム' Ordering'を使うこともできます: 'rows.sortBy(r =>(r.lastName、r.firstName))(Ordering.Tuple2(Ordering.String.reverse、Ordering.String))' 。 – senia
@SachinK: 'customOrdering'を手動でOrdering [Row]'として実装するか、次のように 'Ordering.by'を使って実装することができます:' val customOrdering = 'Ordering.by((r:Row)=>(r.lastName、r .firstName))(Ordering.Tuple2(Ordering.String.reverse、Ordering.String)) ' – senia