日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

入坑kotlin

發(fā)布時間:2025/3/19 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 入坑kotlin 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

*** kotlin連jpa

始終報反序列化錯誤,找了最后發(fā)現(xiàn)是日期類型搞的鬼,OffsetDateTime? 引入

compile 'org.hibernate:hibernate-java8:5.0.12.Final'

大家在使用JPA 的時候,如果你的 Entity 中有 OffsetDateTime 類型的字段,那么你需要加入hibernate-java8 這個依賴

如果你用 Springboot 是1.5.9.RELEASE 那么使用 compile 'org.hibernate:hibernate-java8:5.2.12.Final'
如果你用 Springboot 是1.5.2.RELEASE 那么使用 compile 'org.hibernate:hibernate-java8:5.0.12.Final'




*** kotlin連ObjectMapper解析 json 字符串 為對對象

示例1:
var javaType : JavaType = objectMapper.getTypeFactory().constructParametricType(HashMap::class.java, String::class.java, String::class.java)
var mapPara : HashMap<String,String> = objectMapper.readValue(remark,javaType) mapPara["x"]

示例2: var javaType : JavaType =objectMapper.getTypeFactory().constructParametricType(List::class.java, String::class.java)
val brandList: List<String> = objectMapper.readValue(brands, javaType)

示例3: var xDto : XtDTO = objectMapper.readValue(str, object : TypeReference<XtDTO>() {})

***?List<String> to String || String to List<String> class StringListConverter : TypeConverter<String, MutableList<String>>() {val separator = ","override fun getDBValue(model: MutableList<String>?): String =if (model == null || model.isEmpty())""elsemodel.joinToString(separator = separator) { it }override fun getModelValue(data: String?): MutableList<String> {return data?.split(separator)?.toMutableList() ?: mutableListOf()} }

OffsetDateTime工具類


https://blog.csdn.net/chinoukin/article/details/78875458
public static void main(String[] args) {DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime time = LocalDateTime.now();String localTime = df.format(time);LocalDateTime ldt = LocalDateTime.parse("2018-01-12 17:07:05",df);System.out.println("LocalDateTime轉(zhuǎn)成String類型的時間:"+localTime);System.out.println("String類型的時間轉(zhuǎn)成LocalDateTime:"+ldt);}

LocalDateTime轉(zhuǎn)成String類型的時間:2018-01-12 17:36:52
String類型的時間轉(zhuǎn)成LocalDateTime:2018-01-12T17:07:05

https://www.cnblogs.com/skywang12345/p/string01.html

Kotlin List:

https://www.jianshu.com/p/712e87f83c31?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

List是有順序的數(shù)據(jù)結(jié)構(gòu),在Kotlin中提供了類似數(shù)組的訪問方式:

// List<out E> operator fun get(index: Int): E // MutableList<out E> operator fun set(index: Int, element: E): E

get()和set()函數(shù)重載了操作符后,就可以操作List了:

val list = mutableListOf("Hello", "World") println(list[0]) // 等價于 println(list.get(0)) list[1] = "" // 等價于 list.set(1, "")

在Kotlin中,kotlin.collections.Collections.kt文件里定義了幾個常用的集合工具函數(shù),主要涉及List部分,如下介紹:

一、listOf()函數(shù)

Collection.kt定義了三個參數(shù)不同的listOf()函數(shù),可以方便地創(chuàng)建一個不可變的List:

fun <T> listOf(): List<T> fun <T> listOf(T): List<T> fun <T> listOf(vararg T): List<T>
  • 第一個無參的listOf()函數(shù)返回空的List,它直接調(diào)用同一文件內(nèi)定義的emptyList()函數(shù),該函數(shù)返回一個單例對象EmptyList。EmptyList是List<Nothing>接口的實現(xiàn)類,可以代表所有類型的空列表。
  • 第二個listOf()函數(shù)產(chǎn)生一個只有一個元素的不可變列表,它直接調(diào)用java.util.Collections類的singletonList()方法。
    -第三個lisOf(),接受可變數(shù)量的T類型元素并生成包含這些元素的列表。傳入一個T類型的數(shù)組,如果長度為0就返回空列表,否則 就將數(shù)組轉(zhuǎn)換為列表。

二、mutableListOf()函數(shù)

listOf()函數(shù)可以創(chuàng)建不變的List,要想創(chuàng)建可變的List,可以使用mutableList()函數(shù):

inline fun mutableListOf(): MutableList<T> = ArrayList()fun mutableListOf(vararg elements: T): MutableList<T> { if(elements.size == 0) { return ArrayList() } else { return ArrayList(ArrayAsCollection(elements, isVarargs = true)) } }
  • inline關(guān)鍵字定義了內(nèi)聯(lián)函數(shù),會在編譯時展開到調(diào)用處,提高性能。
  • Kotlin的集合框架只定義了接口,具體實現(xiàn)類都是直接調(diào)用Java類。mutableListOf()返回一個ArrayList對象。

三、arrayListOf()函數(shù)

arrayListOf()函數(shù)用來創(chuàng)建可變的ArrayList,有兩個參數(shù)不同的重載形式:

inline fun <T> arrayListOf(): ArrayList<T> = ArrayList()fun <T> arrayListOf(vararg elements: T): ArrayList<T> {if(elements.size == 0) {return ArrayList() } else { return ArrayList(ArrayAsCollection(elements, isVarargs = true)) } }
  • 這個函數(shù)的實現(xiàn)與mutableListOf()完全一樣,唯一的不同在于返回的類型不同。arrayListOf()返回ArrayList<T>,是一個Java的ArrayList類型,所以是可變的。

四、listOfNotNull()函數(shù)

以上的函數(shù)都是可以接受null作為元素的,這與Java中的List是不同的。而這個方法會把null全部剔除掉,返回包含所有非null值的List:

fun listOfNotNull(element: T?): List<T> = if(element != null) listOf(element) else emptyList() fun listOfNotNull(vararg elements: T?): List<T> = elements.filterNotNull()
  • 這兩個函數(shù)都接受可空的T?類型參數(shù),返回剔除所有null值的List
  • 第二個函數(shù)調(diào)用的Array<out T?>.filterNotNull()函數(shù),會先新建一個ArrayList<T>,然后遍歷數(shù)組內(nèi)的所有元素,如果不是null就添加到ArrayList里,最后返回ArrayList。

五、binarySearch()函數(shù)

Collections.kt文件中提供了四個針對List的binarySearch()函數(shù),它們可以對列表進行二分查找:

fun <T> List<T>.binarySearch(element: T, comparator: Comparator<in T>, fromIndex: Int = 0, toIndex: Int = size): Int fun <T> List<T>.binarySearch(fromIndex: Int = 0, toIndex: Int = size, comparison: (T) -> Int): Int fun <T: Comparable<T>> List<T?>.binarySearch(element: T?, fromIndex: Int = 0, toIndex: Int = size): Int inline fun <T, K : Comparable<K>> List<T>.binarySearchBy(key: K?, fromIndex: Int = 0, toIndex: Int = size, crossinline selector: (T) -> K?): Int = binarySearch(fromIndex, toIndex) { compareValues(selector(it), key) }
  • 函數(shù)需要提供一個Comparator比較器,與java.util.Arrays.binarySearch()相同;
  • 函數(shù)需要提供一個(T)->Int類型的函數(shù),用來比較列表內(nèi)的元素,可以視為傳入一個compareTo()函數(shù)。
  • 函數(shù)提供了可空元素的二分查找。
  • 函數(shù)需要提供一個(T)-K?類型的函數(shù)和一個K?類型的值,它會在列表中用二分查找法尋找符合這個值的元素的索引。


  • 轉(zhuǎn)載于:https://www.cnblogs.com/pokay/p/8423856.html

    與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

    總結(jié)

    以上是生活随笔為你收集整理的入坑kotlin的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。