Tag: 数组

在Kotlin中创建通用的二维数组

假设我有一个泛型类,我需要一个泛型类型T的二维数组。 如果我尝试以下 class Matrix<T>(width: Int, height: Int) { val data: Array<Array<T>> = Array(width, arrayOfNulls<T>(height)) } 编译器会抛出一个错误,说“ 不能使用'T'作为实体类型参数,而是使用一个类。 ”

Kotlin使用迭代索引过滤lambda数组

我想过滤一个数组到每个第n个项目的数组。 例如: fun getNth(array: Array<Any>, n: Int): Array<Any> { val newList = ArrayList<Any>() for (i in 0..array.size) { if (i % n == 0) { newList.add(array[i]) } } return newList.toArray() } 有没有一种惯用的方法来做到这一点,例如使用Kotlin的.filter()和没有A)供应一个新的ArrayList和B)手动迭代for / in循环?

Kotlin在类中基于类var的排序数组

我很难找到正确的代码排序我的数组。 在我的数组里面有一个我创建的类的数组。 在类内部,有一个名为Rank的变量,它包含一个Int。 我想根据类中的数字(从最高到最低)对我的数组进行排序。 我是Kotlin语言的新手,但使用Swift语言。 Swift代码等价于我试图实现的是: TrendingArray.sort(by: {$0.Rank > $1.Rank})

如何从Kotlin的Java类型数组中获取javaclass?

对于pojo类: //java MyClass.getClass(); //kotlin MyClass::class.java 但如何从数组getClass? //java MyClass[].class; //kotlin ??? MyClass[]::class.java – 不工作:(

我怎么能把一个字符串分割成一个数组在Kotlin?

我正在创建一个应用程序,它要求我将从文件中读入的字符串拆分为一个值数组。 我想在逗号分割字符串,所以例如,如果字符串读取: “名称,2012,2017” 数组中的值将是: 数组索引0 – 名称 数组索引1 – 2012 数组索引2 – 2017 我在Java中找到了这个例子: String[] stringArray = string.split(","); 但是我想知道如何在Kotlin中做到这一点。 对不起,如果这真的很简单!

JsonArray到Kotlin数据类使用Retrofit(期望的BEGIN_OBJECT,但是BEGIN_ARRAY)

我正在使用Retrofit2 fun create(): MyApiService { return Retrofit.Builder() .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl(BASE_URL) .build() .create(MyApiService::class.java) } 隐式转换下面的Json [{ "id": 1, "name": "John", }, { "id": 2, "name": "Mary", } ] 转换成Kotlin数据类 object Model { data class Person(val id: Int, val name: String) } 但是,我正在尝试使用Expected BEGIN_OBJECT but was BEGIN_ARRAY错误 @GET("/people.json") fun getPeople() : Observable<Model.Person> 我试着改变Model对象从列表扩展(正如你通常在使用Java的改造1)或创建人的List字段,但无济于事。

Kotlin和泛型,使用泛型数组实现抽象泛型类

我有以下抽象类 abstract class Vec2t<T : Number>(open var x: T, open var y: T) 由…实施 data class Vec2(override var x: Float, override var y: Float) : Vec2t<Float>(x, y) 到目前为止,一切正常 现在,我想为矩阵做类似的事情,这是我的抽象类 abstract class Mat2t<T : Number>(open var value: Array<out Vec2t<T>>) 应该由…来执行 class Mat2(override var value: Array<Vec2>) : Mat2t<Float>(value) 但编译器抱怨Array<Vec2> : 错误:(8,32)Kotlin:“值”的类型与在main.mat.Mat2t中定义的重写的var-property“public open var value:Array>”的类型不匹配 有人告诉我: 我不能改变一个var属性的类型,当我重写它(但实际上我没有真的改变它,我重写它与一个子类型..是同样的事情?) mat2.value […]

Kotlin:如何创建一个String类型的二维数组

我在学习kotlin。 我需要创建一个二维数组,它可以容纳单词,特殊字符和数字。在某些地方,我发现这段代码这个问题是,它只能容纳诠释。 当我试图用“字符串”替换关键字“IntArray”。 它返回一个错误错误有人可以帮助我创建一个可以在Kotlin中保存字符串的10×8 Arrray

如何序列化/反序列化Kotlin中的自定义对象数组?

在我的Kotlin Android项目中,我做了一个扩展Serializable的FileItem类 class FileItem(<parameters>) : Serializable, Comparable<FileItem> { 所以我需要将这个类的实例序列化成一个Bundle val arguments:Bundle = Bundle() arguments.putSerializable("folders", folders as Serializable) 文件夹已被声明为: folders:Array<FileItem> (method parameter) 上面的序列化代码编译没有任何警告。 同时,当我需要反序列化文件夹项目时出现问题: val arguments: Bundle? = getArguments() if (arguments != null){ foldersItems = arguments.getSerializable("folders") as Array<FileItem> 其中foldersItems被声明为 var foldersItems: Array<FileItem>? 我得到以下警告,我不能设法解决没有suppress_warning注释 : w: <Path to my class>: (78, 28): Unchecked cast: java.io.Serializable! to kotlin.Array<com.loloof64.android.chess_positions_archiver.main_file_explorer.FileItem> […]

Kotlin数组类型和类文字

我想用GSON反序列化JSON对象的数组。 所以简单的电话: val arrayOfFoo = gson.fromJson(source, Array<Foo<*>>::class.java>) 应该做的伎俩。 但是类型擦除告诉我们,Foo <*>在运行时不存在,所以弹出一个错误“只有类文字被允许在类文字的左边”。 那么,解决方案必须是: val arrayOfFoo = gson.fromJson<Array<Foo<*>>>(source, Array::class.java) 不幸的是,现在的Kotlin编译器魔术 – 将Wrapper类型的数组转换为原始数组 – 不知道该怎么做,并告诉我们:“数组类需要类类型,请在尖括号中指定一个类型”。 但是,等一下:这是,第二个之前什么都不行。 运用 Array<Foo>::class.java 也不起作用,因为现在编译器告诉我们:“Foo预计会有一个类型的参数”。 我个人看不出有办法解决这个问题。 是不可能给一个类型的数组的类型,它的类型也需要一个类型参数?