Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4580156
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T20:44:37+00:00 2026-05-21T20:44:37+00:00

In several different places in my application, I need to take a Seq[SalesRow] and

  • 0

In several different places in my application, I need to take a Seq[SalesRow] and return a Map[String,SalesRow], where the string is the name of a country.

I need to use this in several places. For example, I take a list of all SalesRows and get a global breakdown of sales by country. But in other places, I want to break down my sales by month and then by country (so Map[Month,Seq[SalesRow]] becomes Map[Month,Map[String,Seq[SalesRow]]]) – in still other places, I want to break down by day and then by country.

My question is: where do I put the (small) amount of logic that takes a Seq[SalesRow] and returns a map of countries to rows? Right now, I’m putting it in a companion object method, SalesRow.byCountry(rows : Seq[SalesReport]. Is that optimal?

A slightly crazier idea occurred to me, which is to create an implicit conversion from Seq[SalesRow] to EnhancedSalesRowSeq, which has a byCountry instance method. This appeals to me, because the operation is applicable to any sequence of SalesRows.

Is this a good idea?

Is adding the logic to the companion object my best choice, or are there better options?

Thanks.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T20:44:38+00:00Added an answer on May 21, 2026 at 8:44 pm

    In case you are not aware the library comes with a groupBy function. Basically given a Seq[SalesRow] it will give you a Map[T, Seq[SalesRow]] based on a function from SalesRow to T.

    So if your function is easy you can easily get a map. I do like your idea of the enhanced seq in conjunction with putting the implicit in the SalesRow companion:

    case class SalesRow(val month:Int, val country:String, 
      val person:String, val amount:Float)
    
    class EnhancedRow(rows: Seq[SalesRow]) {
      def byCountry: Map[String, Seq[SalesRow]] = 
        rows.groupBy(_.country)
      def byMonth: Map[Int, Seq[SalesRow]] = 
        rows.groupBy(_.month)
      def byCountryByMonth: Map[String, Map[Int, Seq[SalesRow]]] = byCountry.mapValues(r => new EnhancedRow(rows).byMonth)
    }
    
    object SalesRow {
      implicit def toEnhanced(rows: Seq[SalesRow]) = new EnhancedRow(rows) 
    }
    
    object Test {
      def main(args:Array[String] = null) {
        val seq: Seq[SalesRow] = // ... fill this
        println(seq.byCountry)
        println(seq.byCountryByMonth)
        // same as:
        println(seq.byCountry.mapValues(_.byMonth))
      }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Borrowing this code from several different tutorials on how to use Google maps on
Here's the conundrum. In two different places in my application, I use a border
I need to use the same storyboard in several places therefore I placed the
In my game application I have several different activities that all can be accessed
OK, I am building an application that will be using ASIHttpRequest in several places
In my WPF application, I use Routed Commands quite often, since there are several
I have a web application running on Tomcat. There are several calculations that need
I am writing an application that will ship in several different versions (initially around
In a typical MVC application we have validation that occurs in many different places.
I have several different servers used for different purposes. Everyone use mysql, but it

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.