Tag: 序列

RxJava-将Observable转变为Iterator,Stream或Sequence

我知道这打破了很多Rx规则,但我真的很喜欢RxJava-JDBC ,所以我的队友也是这样。 关系数据库对于我们的工作非常重要,Rx也是如此。 但是有些情况下,我们不希望作为Observable<ResultSet>发出,而只是有一个基于拉的Java 8 Stream<ResultSet>或Kotlin Sequence<ResultSet> 。 但是我们非常习惯于只返回一个Observable<ResultSet>的RxJava-JDBC库。 因此,我想知道是否有一种方法可以使用扩展函数将Observable<ResultSet>转换为Sequence<ResultSet> ,而不执行任何中间集合或toBlocking()调用。 下面是我迄今所有的,但我的头正在旋转,试图连接推拉系统,我不能缓冲,因为每个onNext()调用ResultSet是有状态的。 这是不可能的任务吗? import rx.Observable import rx.Subscriber import java.sql.ResultSet fun Observable<ResultSet>.asSequence() = object: Iterator<ResultSet>, Subscriber<ResultSet>() { private var isComplete = false override fun onCompleted() { isComplete = true } override fun onError(e: Throwable?) { throw UnsupportedOperationException() } override fun onNext(rs: ResultSet?) { throw UnsupportedOperationException() } […]

从Kotlin中的数字列表中获得一对数字

我有以下列表: [-1, -1, 2, 3, 4, 5, -1, 9, 10, 11, -1, -1, 23, 24, 25] 我想要的是下面的列表: [Pair(2,5), Pair(9,11), Pair(23,25)] 我可以使用像temp和temp这样的临时变量进行迭代。 但我正在寻找一个像map , filter等List上的转换方法来得到我的解决方案。

Unweave序列,Kotlin功能/流式习语

我有一个交错的数据序列(与固定步幅),我想减少它为每个“结构”(n *跨度价值n值)单个值。 我可以使用循环写入到可变列表中,并为读者索引选定步骤,但是我正在寻找更多的功能和可读的方法。 有什么想法吗? 例如:输入序列由RGB三元组(步幅3)组成,输出为灰度。 命令的方式是这样的: fun greyscale(stream:List<Byte>):List<Byte>{ val out = ArrayList(stream.size / 3) var i = 0; var o = 0 while(i < stream.size) out[o++]=(stream[i++] + stream[i++] + stream[i++])/3 return out } 我怎么能没有明确地实现一个函数和可变容器,而是纯粹的功能扩展如.map等?

Kotlin:如何获得匹配的第一行的捕获组?

从一行开始 我想测试一个正则表达式是否匹配,如果是,得到第一个匹配 此外,我想从该正则表达式匹配中返回一个捕获组 如果我不在乎,我会先在线上做一个“第一”,如果存在,重新运行正则表达式。 val possibleMatch = input.lineSequence().first { myRegex.matches(it) } …但我想成为kotlin酷,不必重新运行正则表达式。 我应该使用地图到MatchGroup并过滤出空位吗? 感觉比它可能更冗长… input.lineSequence() .mapNotNull { myRegex.find(it) } .map { it.groupValues[1] } .first()

如何修改Kotlin序列的前缀,但保留尾巴?

Kotlin提供了takeWhile方法,让一个Sequence<T>前n项目分别作为另一个序列来处理,例如drop其中的一些, map到其他值等。 但是当我使用take和takeWhile ,序列的尾部被丢弃。 现在,给定一个一次受约束的序列,如何保留尾部,如何保留它的任意前缀到另一个序列? 例: val seq = (1..10).asSequence().constrainOnce() // emits 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 val modified = seq.changePrefix { take(5).map { -1 * it } } // emits -1, -2, -3, -4, -5, 6, 7, 8, 9, 10 我如何做同样的多个前缀? 例: val seq = (1..10).asSequence().constrainOnce() val modified = […]

什么是这个python迭代器的等价物的kotlin成语

问题是,如何在Kotlin中创建一个像Python一样的迭代器。 考虑这个将字符串解析为子字符串的Python代码: def parse(strng, idx=1): lst = [] for i, c in itermarks(strng, idx): if c == '}': lst.append(strng[idx:i-1]) break elif c == '{': sublst, idx = parse(strng, i+1) lst.append(sublst) else: lst.append(strng[idx:i-1]) idx = i+1 return lst, i >>>res,resl = parse('{ a=50 , b=75 , { e=70, f=80 } }') >>>print(resl) >>>[' a=50', ' b=75', […]

Java 8 stream.collect(Collectors.toMap())类似于kotlin

假设我有一个人员列表,并希望有Map<String, Person> ,其中String是人名。 我应该怎么做在科特林?

Kotlin序列“跳过”前N个条目

如何“跳过”kotlin序列/列表的前N个条目? 我正在寻找相当于C#LINQ“skip”的kotlin。