How to use scala.collection.immutable.List in a Java code

前端 未结 4 1917
轮回少年
轮回少年 2020-12-17 15:17

I need to write a code that compares performance of Java\'s ArrayList with Scala\'s List. I am having a hard time getting the Scala List

4条回答
  •  心在旅途
    2020-12-17 15:33

    Use scala.collection.JavaConversions from inside of java.

    For example to create a nested scala case class that requires a scala List in its constructor:

    case class CardDrawn(player: Long, card: Int) 
    case class CardSet(cards: List[CardDrawn]) 
    

    From Java you can use asScalaBuffer(x).toList() as follows:

    import scala.collection.JavaConversions;
    import java.util.ArrayList;
    import java.util.List;
    
    public CardSet buildCardSet(Set widgets) { 
    
      List cardObjects = new ArrayList<>();
    
      for( Widget t : widgets ) {
        CardDrawn cd = new CardDrawn(t.player, t.card);
        cardObjects.add(cd);   
      }
    
      CardSet cs = new CardSet(JavaConversions.asScalaBuffer(cardObjects).toList());
      return cs;
    }
    

提交回复
热议问题