Итерация по наборам Java в Scala

Один из способов - использовать один перегруженный фабричный метод org.jooq.impl.DSL, который принимает javax.sql.DataSource для построения org.jooq.DSLContext:

Это может выглядеть примерно так:

final HikariConfig config = new HikariConfig();
config.setMinimumIdle(...);
config.setMaximumPoolSize(...);
// ...etc - whatever other pool behavior you desire

final HikariDataSource dataSource = new HikariDataSource(config);

final DSLContext dslContext = DSL.using(dataSource, SQLDialect.MYSQL)

111
задан 11 revs, 4 users 41% 27 December 2013 в 23:38
поделиться

4 ответа

Существует класс-оболочка ( scala.collection.jcl.MutableIterator.Wrapper ). Итак, если вы определите

implicit def javaIteratorToScalaIterator[A](it : java.util.Iterator[A]) = new Wrapper(it)

, он будет действовать как подкласс итератора Scala, поэтому вы можете выполнить foreach .

26
ответ дан 24 November 2019 в 02:56
поделиться

Корректный ответ здесь должен определить неявное преобразование из Java Iterator к некоторому пользовательскому типу. Этот тип должен реализовать foreach метод, который делегирует к лежанию в основе Iterator. Это позволит Вам использовать Scala for - цикл с любым Java Iterator.

15
ответ дан Peter Mortensen 24 November 2019 в 02:56
поделиться

Вы могли преобразовать набор Java в массив и использование что:

val array = java.util.Arrays.asList("one","two","three").toArray
array.foreach(println)

Или идут и преобразовывают массив в список Scala:

val list = List.fromArray(array)
4
ответ дан Fabian Steeg 24 November 2019 в 02:56
поделиться

Начиная с Scala 2.8, все, что вам нужно сделать, это импортировать объект JavaConversions, который уже объявляет соответствующие преобразования.

import scala.collection.JavaConversions._

Однако это не будет работать в предыдущих версиях.

254
ответ дан 24 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: