| // Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package non_null |
| |
| data class Car( |
| val make: String, |
| val model: String, |
| val year: Int, |
| val plateNumber: String) |
| |
| fun Collection<Car>.forMakeAndModel( |
| make: String, model: String, sinceYear: Int? |
| ) = this.asSequence() |
| .filter { it.make == make } |
| .filter { it.model == model } |
| .filter { sinceYear != null && it.year >= sinceYear } |
| .groupBy { it.year } |
| .toSortedMap() |
| |
| fun main(args: Array<String>) { |
| val leaf = Car("Nissan", "Leaf", 2015, " LEAF ") |
| val ms1 = Car("Tesla", "Model S", 2015, " LGTM1 ") |
| val ms2 = Car("Tesla", "Model S", 2017, " LGTM2 ") |
| val m3 = Car("Tesla", "Model 3", 2018, " LGTM3 ") |
| val cars: List<Car> = mutableListOf(leaf, ms1, ms2, m3) |
| println(cars.forMakeAndModel("Tesla", "Model S", null)) |
| } |