Android
 Computer >> コンピューター >  >> プログラミング >> Android

Kotlinの複数のフィールドでコレクションを並べ替える


コレクション は、開発者がさまざまなタイプの関連オブジェクトを1か所にグループ化できるオブジェクトです。 Kotlinライブラリには、リスト、配列など、さまざまな種類のコレクションがあります。

この記事では、コレクション内に存在するさまざまなプロパティでコレクションを並べ替える方法を説明します。そのために、Kotlinライブラリが提供する次の2つの関数を利用します。

  • sortedWith()

  • compareBy()

sortedWith()

sortedWith() 指定されたコンパレータによってソートされたすべての要素のリストを返すKotlinライブラリによって提供される関数です。 Kotlinの公式ドキュメントによると、関数の定義は次のとおりです。

fun <T> Array<out T>.sortedWith(
   comparator: Comparator<in T>
): List<T>

sortedWith() コンパレータを引数として取り、各オブジェクトのカスタムプロパティを比較して、同じものを並べ替えます。

compareBy()

compareBy() sortedWith()に渡すコンパレータを作成する責任があります オブジェクトのプロパティを並べ替えるために。 Kotlinのドキュメントによると、関数の定義は次のようになります。

fun <T> compareBy(
   vararg selectors: (T) -> Comparable<*>?
): Comparator<T>

次の例では、クラス Studentを作成します 学生の名前、年齢、対応するGPAなどのさまざまな種類の値を保持します。 「年齢」や「GPA」だけでなく、全体として同じように並べ替えたいと思います。

fun main()
{

   val studentA=Student("Student A",18,7.0)
   val studentB=Student("Student B",18,6.9)
   val studentC=Student("Student C",20,7.3)
   val studentD=Student("Student D",22,8.3)

   val studentsList=listOf(
      studentA,
      studentB,
      studentC,
      studentD
   );

   val sortedList=studentsList.sortedWith(
      compareBy(
         {it.age},
         {it.GPA}
      )
   )

   sortedList.forEach {
      println("name: ${it.name}, age: ${it.age}, GPA: ${it.GPA}")
   }
}

class Student(val name:String, val age:Int, val GPA: Double)

出力

コードを実行すると、次の出力が生成されます-

name: Student B, age: 18, GPA: 6.9
name: Student A, age: 18, GPA: 7.0
name: Student C, age: 20, GPA: 7.3
name: Student D, age: 22, GPA: 8.3

  1. PHPで複数のキーで多次元配列を並べ替える

    array_multisort関数を使用して、複数のキーに基づいて多次元配列を並べ替えることができます- 例 $my_list = array(    array('ID' => 1, 'title' => 'data one', 'event_type' => 'one'),    array('ID' => 2, 'title' => 'data two', 'event_type

  2. PythonでCSVを複数の列で並べ替える方法は?

    CSVを複数の列で並べ替えるには、sort_values()メソッドを使用します。複数の列で並べ替えるということは、列の1つに値が繰り返されている場合、並べ替えの順序は2番目のに依存することを意味します。 sort_values()メソッドで言及されている列。 まず、入力したCSVファイル「SalesRecords.csv」を読んでみましょう- dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesRecords.csv") ここで、複数の列、つまり「Reg_Price」と「Car」に従って並べ替えます- da