Tag: 数组

在Kotlin中展开二维数组的迭代器

我有一个Grid类,包装在Cell对象的二维数组。 我希望这个类实现Iterable接口,以便在循环中使用它并直接遍历整个单元格。 有一个简单的方法来做到这一点? Kotlin是否支持yield return样式迭代器? 我目前的解决方案是相当冗长的: override fun iterator() = object : Iterator { val currentOuter = grid.iterator() // grid is object of Array<Array> var currentInner = if (currentOuter.hasNext()) currentOuter.next().iterator() else arrayOf().iterator() override fun next(): Cell { if (!hasNext()) { throw NoSuchElementException() } return if (currentInner.hasNext()) { currentInner.next() } else { currentInner = currentOuter.next().iterator() currentInner.next() […]

我怎样才能创建一个Kotlin像Java一样的数组呢?

我如何创建一个像我们在java中做的数组? int A[] = new int[N]; 我怎么能在Kotlin做到这一点?

Kotlin数组的toList和asList有何不同?

Kotlin Array类提供了asList() , toList()和toMutableList()方法。 前两种方法都返回一个List ,并在Kotlin参考文献中描述如下: asList()返回一个包装原始Array的List 。 toList()返回包含[原始Array ]的所有元素的List 。 这些方法似乎可以互换。 这两种方法在实践中有何不同?

将使用字节的java函数转换为Kotlin

我有一个用Java编写的函数转换为Kotlin特定的问题。 这里用Java编写: private boolean isOldOemCommissioningFormat(byte[] assetData) { if (assetData == null || assetData.length > 6) & 0x01) == 0; return false; } 但是,当我转换到使用Android Studio IDE转换器Kotlin它给了我这个: private fun isOldOemCommissioningFormat(assetData: ByteArray?): Boolean { if (assetData == null || assetData.size < mAssetDataDelimeterByteCount + mAssetDataOwnerIdByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount) return false val oemMarkerIndex = mAssetDataDelimeterByteCount + mAssetDataIdLeadingZerosByteCount + mAssetDataIdByteCount […]

如何在kotlin中获得多维原始数组类?

在Java中,我一直在使用gson来解析一个像这样[[1.2, 4.1], [3.4, 4.4]] 1.2,4.1 [[1.2, 4.1], [3.4, 4.4]] 3.4,4.4 [[1.2, 4.1], [3.4, 4.4]]的JSON到一个java原始的多数组double[][] 代码看起来像这样(工作正常): String json = “[[1.2, 4.1], [3.4, 4.4]]” double[][] variable = new Gson().fromJson(json, double[][].class); 有没有办法在kotlin中获得double[][].class ? 是double[][] variable; 可以替代kotlin? 编辑: 我的目标是在kotlin中用gson实现同样的行为。 我有一千个双数组解析。 我想在kotlin中做这样的事情: val json = “[[1.1, 1.2], [2.1, 2.2, 2.3], [3.1, 3.2]” val variable:Double[][] = Gson().fromJson(json, Double[][]::class.java)

Swift到Kotlin,管理一成不变的名单

我试图移植一个现有的Swift代码给Kotlin,我想使用以下Swift代码的最佳做法: struct Deck { private(set) var cards: [Card] var cardsCount: Int { return self.cards.count } init(cards: [Card] = []) { self.cards = cards } mutating func add(card: Card) { self.cards.append(card) } } 设计目标是: cards属性在类之外是不可修改的,所以它的types应该是List fun add(card: Card)应该修改内部cards列表 有没有一种方法来实现这个Kotlin没有使用两个单独的属性 – 一个private var mutableCards: MutableList和一个计算属性val cards: List get() = this.mutableCards 对于这种情况,我需要一些最佳实践。

Kotlin – 如何将字符串转换为ByteArray

我正在尝试将String转换为Kotlin中的ByteArray 。 在Java中,我们可以使用getBytes()方法进行转换。

Kotlin和详细的数组实例化

假设我有通过4个顶点的路径。 在做快速原型时,我会在java中定义这个 double[][] path = {{1.0, 2.0}, {1.0,3.0}, {3.0,4.0}, {8.0,9.0}} 使用arrayOf和doubleArrayOf函数,Kotlin中的代码将会是相同的 val path = arrayOf(doubleArrayOf(1.0, 2.0), doubleArrayOf(1.0, 2.0), doubleArrayOf(1.0,3.0), doubleArrayOf(8.0,9.0)) 这感觉有点冗长。 有没有解决这个问题的Kotlin方法? 编辑:用例是在数字数据的“REPL like”环境中回答查询,例如Matlab或SciPy。

Kotlin字符串到Int数组

我正在寻找最有效的方式来转换一个字符串 “[1,2,3,4,5]” 到Kotlin中的Int [1,2,3,4,5]数组

Kotlin for每个订单

Kotlin forEach是否按照数组的实际顺序遍历一个数组,或者有时可能以另一个顺序? 我的意思是这总是打印1,2,3,… 9或它可能打印这样的1,5,3,4,… val numbers: Array = array(1,2,3,4,5,6,7,8,9) numbers.forEach({(number: Int) -> Log.d(tag,number) }) Kotlin forEach参考