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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

入坑kotlin

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

*** kotlin連jpa

始終報反序列化錯誤,找了最后發現是日期類型搞的鬼,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轉成String類型的時間:"+localTime);System.out.println("String類型的時間轉成LocalDateTime:"+ldt);}

LocalDateTime轉成String類型的時間:2018-01-12 17:36:52
String類型的時間轉成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是有順序的數據結構,在Kotlin中提供了類似數組的訪問方式:

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

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

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

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

一、listOf()函數

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

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

二、mutableListOf()函數

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

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關鍵字定義了內聯函數,會在編譯時展開到調用處,提高性能。
  • Kotlin的集合框架只定義了接口,具體實現類都是直接調用Java類。mutableListOf()返回一個ArrayList對象。

三、arrayListOf()函數

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

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)) } }
  • 這個函數的實現與mutableListOf()完全一樣,唯一的不同在于返回的類型不同。arrayListOf()返回ArrayList<T>,是一個Java的ArrayList類型,所以是可變的。

四、listOfNotNull()函數

以上的函數都是可以接受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()
  • 這兩個函數都接受可空的T?類型參數,返回剔除所有null值的List
  • 第二個函數調用的Array<out T?>.filterNotNull()函數,會先新建一個ArrayList<T>,然后遍歷數組內的所有元素,如果不是null就添加到ArrayList里,最后返回ArrayList。

五、binarySearch()函數

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

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) }
  • 函數需要提供一個Comparator比較器,與java.util.Arrays.binarySearch()相同;
  • 函數需要提供一個(T)->Int類型的函數,用來比較列表內的元素,可以視為傳入一個compareTo()函數。
  • 函數提供了可空元素的二分查找。
  • 函數需要提供一個(T)-K?類型的函數和一個K?類型的值,它會在列表中用二分查找法尋找符合這個值的元素的索引。


  • 轉載于:https://www.cnblogs.com/pokay/p/8423856.html

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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。