Real World Example

Sales Report for an Online Store

An admin dashboard (like a Shopify or Flipkart seller panel) computes reports from raw orders by chaining collection operations.

Example

data class Order(val id: Int, val city: String, val category: String, val amount: Int, val delivered: Boolean)

fun main() {
    val orders = listOf(
        Order(1, "Hyderabad", "Mobiles", 15999, true),
        Order(2, "Mumbai", "Fashion", 1299, true),
        Order(3, "Hyderabad", "Fashion", 2499, false),
        Order(4, "Delhi", "Mobiles", 24999, true),
        Order(5, "Mumbai", "Mobiles", 8999, true),
        Order(6, "Delhi", "Books", 499, true),
        Order(7, "Hyderabad", "Books", 899, true),
    )
    val delivered = orders.filter { it.delivered }

    println("Revenue: ${delivered.sumOf { it.amount }}")

    println("Revenue by city:")
    delivered.groupBy { it.city }
        .mapValues { (_, list) -> list.sumOf { it.amount } }
        .entries.sortedByDescending { it.value }
        .forEach { (city, total) -> println("  %-10s %6d".format(city, total)) }

    val topCategory = delivered.groupingBy { it.category }.eachCount().maxBy { it.value }
    println("Most ordered category: ${topCategory.key} (${topCategory.value} orders)")

    val (bigOrders, smallOrders) = delivered.partition { it.amount >= 5000 }
    println("Big orders: ${bigOrders.map { it.id }}, small orders: ${smallOrders.map { it.id }}")

    println("Pending ids: ${orders.filterNot { it.delivered }.joinToString { "#" + it.id }}")
}

Output

Revenue: 52694
Revenue by city:
  Delhi       25498
  Hyderabad   16898
  Mumbai      10298
Most ordered category: Mobiles (3 orders)
Big orders: [1, 4, 5], small orders: [2, 6, 7]
Pending ids: #3