Finite generated Stream in Java - how to create one?

后端 未结 2 1869
抹茶落季
抹茶落季 2020-12-24 10:44

In Java, one can easily generate an infinite stream with Stream.generate(supplier). However, I would need to generate a stream that will eventually finish.

2条回答
  •  没有蜡笔的小新
    2020-12-24 11:31

    Kotlin code to create Stream of JsonNode from InputStream

    
        private fun InputStream.toJsonNodeStream(): Stream {
            return StreamSupport.stream(
                    Spliterators.spliteratorUnknownSize(this.toJsonNodeIterator(), Spliterator.ORDERED),
                    false
            )
        }
    
        private fun InputStream.toJsonNodeIterator(): Iterator {
            val jsonParser = objectMapper.factory.createParser(this)
    
            return object: Iterator {
    
                override fun hasNext(): Boolean {
                    var token = jsonParser.nextToken()
                    while (token != null) {
                        if (token == JsonToken.START_OBJECT) {
                            return true
                        }
                        token = jsonParser.nextToken()
                    }
                    return false
                }
    
                override fun next(): JsonNode {
                    return jsonParser.readValueAsTree()
                }
            }
        }
    
    

提交回复
热议问题