2013-07-25 3 views
0

Что бы быть лучшим способом превратить List[Foo] в Seq[(String, String)], учитывая, что Foo является интерфейсом Java, как это:Преобразование списка в Seq кортежей атрибутов в Scala?

public interface Foo { 
    Long getKey(); 
    String getValue(); 
} 
+0

Откуда бы взялась вторая струна? Должен ли Long быть преобразован в String и быть первым элементом в кортеже? –

+0

Точно, @JacekLaskowski. – tavlima

ответ

2

Вы можете превратить их map.

class Bar extends Foo{ 
    | def getKey = 0 
    | def getValue = "" 
    | } 
defined class Bar 

scala> val bar = new Bar 
bar: Bar = [email protected]  

scala> val foos = Seq(bar, bar, bar) 
foos: Seq[Bar] = List([email protected], [email protected], [email protected]) 

scala> foos.map(foo => (foo.getKey.toString, foo.getValue)) 
res0: Seq[(String, String)] = List((0,""), (0,""), (0,"")) 
Смежные вопросы