{"id":19328147,"url":"https://github.com/linktosriram/kext4j","last_synced_at":"2026-04-30T19:31:46.626Z","repository":{"id":84228372,"uuid":"200416267","full_name":"linktosriram/kext4j","owner":"linktosriram","description":"Kotlin Extension Functions for Java","archived":false,"fork":false,"pushed_at":"2023-12-15T08:47:30.000Z","size":104,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-05T10:07:39.717Z","etag":null,"topics":["java","java-library","kotlin","kotlin-extensions"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linktosriram.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-08-03T20:03:16.000Z","updated_at":"2024-12-25T05:08:44.000Z","dependencies_parsed_at":"2023-12-15T09:50:14.889Z","dependency_job_id":null,"html_url":"https://github.com/linktosriram/kext4j","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/linktosriram/kext4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linktosriram%2Fkext4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linktosriram%2Fkext4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linktosriram%2Fkext4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linktosriram%2Fkext4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linktosriram","download_url":"https://codeload.github.com/linktosriram/kext4j/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linktosriram%2Fkext4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32475191,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java-library","kotlin","kotlin-extensions"],"created_at":"2024-11-10T02:20:28.460Z","updated_at":"2026-04-30T19:31:46.609Z","avatar_url":"https://github.com/linktosriram.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/linktosriram/kext4j.svg?branch=master)](https://travis-ci.com/linktosriram/kext4j)\n\n# kext4j\n\nKotlin Extension Functions for Java.\n\nImplementation of kotlin extension methods for Java.\n\nCurrently in-progress:\n* https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html\n\n## Provided functions\n\n### StringUtils\n\n* [indices](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/indices.html)\n* [lastIndex](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/last-index.html)\n* [all](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/all.html)\n* [any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/any.html)\n* [asIterable](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/as-iterable.html)\n* [asSequence](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/as-sequence.html)\n* [byteInputStream](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/byte-input-stream.html)\n* [capitalize](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/capitalize.html)\n* [chunked](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/chunked.html)\n* [commonPrefixWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/common-prefix-with.html)\n* [commonSuffixWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/common-suffix-with.html)\n* [contains](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/contains.html)\n* [count](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/count.html)\n* [decapitalize](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/decapitalize.html)\n* [drop](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/drop.html)\n* [dropLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/drop-last.html)\n* [dropLastWhile](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/drop-last-while.html)\n* [dropWhile](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/drop-while.html)\n* [elementAtOrElse](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/element-at-or-else.html)\n* [elementAtOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/element-at-or-null.html)\n* [endsWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/ends-with.html)\n* [filter](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter.html)\n* [filterIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter-indexed.html)\n* [filterIndexedTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter-indexed-to.html)\n* [filterNot](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter-not.html)\n* [filterNotTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter-not-to.html)\n* [filterTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/filter-to.html)\n* [find](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/find.html)\n* [findAnyOf](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/find-any-of.html)\n* [findLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/find-last.html)\n* [findLastAnyOf](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/find-last-any-of.html)\n* [first](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/first.html)\n* [firstOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/first-or-null.html)\n* [flatMap](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/flat-map.html)\n* [flatMapTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/flat-map-to.html)\n* [fold](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold.html)\n* [foldIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold-indexed.html)\n* [foldRight](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold-right.html)\n* [foldRightIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/fold-right-indexed.html)\n* [forEach](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/for-each.html)\n* [forEachIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/for-each-indexed.html)\n* [getOrElse](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/get-or-else.html)\n* [getOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/get-or-null.html)\n* [groupBy](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/group-by.html)\n* [groupByTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/group-by-to.html)\n* [hasSurrogatePairAt](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/has-surrogate-pair-at.html)\n* [ifBlank](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/if-blank.html)\n* [ifEmpty](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/if-empty.html)\n* [indexOf](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/index-of.html)\n* [indexOfAny](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/index-of-any.html)\n* [indexOfFirst](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/index-of-first.html)\n* [indexOfLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/index-of-last.html)\n* [isBlank](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-blank.html)\n* [isEmpty](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-empty.html)\n* [isNotBlank](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-not-blank.html)\n* [isNotEmpty](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-not-empty.html)\n* [isNullOrBlank](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-blank.html)\n* [isNullOrEmpty](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-empty.html)\n* [iterator](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/iterator.html)\n* [last](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/last.html)\n* [lastIndexOf](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/last-index-of.html)\n* [lastIndexOfAny](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/last-index-of-any.html)\n* [lastOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/last-or-null.html)\n* [lines](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/lines.html)\n* [lineSequence](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/line-sequence.html)\n* [map](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map.html)\n* [mapIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-indexed.html)\n* [mapIndexedNotNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-indexed-not-null.html)\n* [mapIndexedNotNullTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-indexed-not-null-to.html)\n* [mapIndexedTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-indexed-to.html)\n* [mapNotNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-not-null.html)\n* [mapNotNullTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-not-null-to.html)\n* [mapTo](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/map-to.html)\n* [max](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/max.html)\n* [maxBy](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/max-by.html)\n* [maxWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/max-with.html)\n* [min](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/min.html)\n* [minBy](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/min-by.html)\n* [minWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/min-with.html)\n* [none](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/none.html)\n* [onEach](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/on-each.html)\n* [orEmpty](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/or-empty.html)\n* [padEnd](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/pad-end.html)\n* [padStart](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/pad-start.html)\n* [partition](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/partition.html)\n* [prependIndent](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/prepend-indent.html)\n* [random](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/random.html)\n* [reader](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/reader.html)\n* [reduce](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/reduce.html)\n* [reduceIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/reduce-indexed.html)\n* [reduceRight](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/reduce-right.html)\n* [reduceRightIndexed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/reduce-right-indexed.html)\n* [regionMatches](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/region-matches.html)\n* [removePrefix](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/remove-prefix.html)\n* [removeRange](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/remove-range.html)\n* [removeSuffix](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/remove-suffix.html)\n* [removeSurrounding](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/remove-surrounding.html)\n* [replace](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace.html)\n* [replaceAfter](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-after.html)\n* [replaceAfterLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-after-last.html)\n* [replaceBefore](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-before.html)\n* [replaceBeforeLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-before-last.html)\n* [replaceFirst](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-first.html)\n* [replaceIndent](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-indent.html)\n* [replaceIndentByMargin](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-indent-by-margin.html)\n* [replaceRange](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/replace-range.html)\n* [reversed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/reversed.html)\n* [single](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/single.html)\n* [singleOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/single-or-null.html)\n* [slice](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/slice.html)\n* [split](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html)\n* [splitToSequence](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split-to-sequence.html)\n* [startsWith](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/starts-with.html)\n* [subSequence](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/sub-sequence.html)\n* [substring](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring.html)\n* [substringAfter](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring-after.html)\n* [substringAfterLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring-after-last.html)\n* [substringBefore](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring-before.html)\n* [substringBeforeLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/substring-before-last.html)\n* [sumBy](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/sum-by.html)\n* [sumByDouble](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/sum-by-double.html)\n* [take](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/take.html)\n* [takeLast](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/take-last.html)\n* [takeLastWhile](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/take-last-while.html)\n* [takeWhile](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/take-while.html)\n* [toBigDecimal](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-big-decimal.html)\n* [toBigDecimalOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-big-decimal-or-null.html)\n* [toBigInteger](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-big-integer.html)\n* [toBigIntegerOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-big-integer-or-null.html)\n* [toByteArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-byte-array.html)\n* [toByteOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-byte-or-null.html)\n* [toCharArray](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-char-array.html)\n* [toCollection](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-collection.html)\n* [toHashSet](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-hash-set.html)\n* [toIntOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-int-or-null.html)\n* [toList](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-list.html)\n* [toLongOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-long-or-null.html)\n* [toMutableList](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-mutable-list.html)\n* [toPattern](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-pattern.html)\n* [toRegex](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-regex.html)\n* [toSet](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-set.html)\n* [toShortOrNull](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-short-or-null.html)\n* [toSortedSet](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/to-sorted-set.html)\n* [trim](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim.html)\n* [trimEnd](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim-end.html)\n* [trimIndent](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim-indent.html)\n* [trimMargin](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim-margin.html)\n* [trimStart](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/trim-start.html)\n* [windowed](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/windowed.html)\n* [zip](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/zip.html)\n* [zipWithIndex](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/zip-with-next.html)\n\n##  Example\n\n```java\nimport static io.github.linktosriram.kext4j.text.StringUtils.*;\n\nmap(\"hello world\", Character::toUpperCase);     // [H, E, L, L, O,  , W, O, R, L, D]\nfilter(\"Hello World\", Character::isUpperCase);  // \"HW\"\ngroupBy(\"Hello World\", Character::isUpperCase); // {true=[H, W], false=[e, l, l, o,  , o, r, l, d]}\n```\n\n## License\n\nThis project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinktosriram%2Fkext4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinktosriram%2Fkext4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinktosriram%2Fkext4j/lists"}