Tag: 列表

Kotlin – List列表中的列表过滤

我有这些数据类: data class RouteType( @SerializedName("type") val type: String, @SerializedName("items") val items: List<RouteItem>) data class RouteItem( @SerializedName("id") val id: String, @SerializedName("route") private val route: List<DoubleArray>) 我想按类型过滤RouteType的列表,并在其中通过id过滤RouteItem的列表。 我的代码现在: // val filter: HashMap<String, List<String>> val result = routeTypes // List<RouteType> .filter { it.type in filter.keys } .map { routeType -> routeType.items.filter { it.id in filter[routeType.type]!! } } 如何使.map返回列表中的过滤列表? […]

Java和Kotlin中的共享接口之间的关系(例如:List <>)

当我仔细看看kotlin .map内联函数时,问题出现了。 这是它的定义 public inline fun <T, R> Iterable<T>.map(transform: (T) -> R): List<R>{ return mapTo(ArrayList<R>(collectionSizeOrDefault(10)), transform)} 在函数定义中,它应该返回一个在Collection.kt中定义的List。 但是,它返回一个ArrayList,它实现了Java中的List接口(List.java) Java界面和Kotlin界面有什么关系? 我想象会有更类似的例子,也许设置,或地图?

Kotlin:如何使用List转换:未选中Cast:kotlin.collections.List <Kotlin.Any?>转换为kotlin.colletions.List <Waypoint>

我想写一个函数,返回List中不是第一个或最后一个项目(一个通过点)的每个项目。 该函数获得一个通用的List<*>作为输入。 如果列表中的元素是Waypoint类型,则只能返回结果: fun getViaPoints(list: List<*>): List<Waypoint>? { list.forEach { if(it !is Waypoint ) return null } val waypointList = list as? List<Waypoint> ?: return null return waypointList.filter{ waypointList.indexOf(it) != 0 && waypointList.indexOf(it) != waypointList.lastIndex} } 将List<*>为List<Waypoint> ,我得到警告: 未选中Cast:kotlin.collections.List到kotlin.colletions.List 否则,我无法想出一个办法来实施它。 没有这个警告,什么是正确的方式来实现这个功能?

使用Kotlin中的Java Stream API获取列表中的元素

以下代码(用Kotlin编写)从列表中提取元素。 它工作,但看起来相当丑陋,难以阅读。 有没有更好的方法来写入与Java流API相同? (例子可以在Kotlin或Java中给出) val listOfLists: List<Any> = … val outList: MutableList<Any> = mutableListOf() listOfLists.forEach { list -> if (list is ArrayList<*>) list.forEach { l -> outList.add(l) } } return outList;

我们如何从Kotlin的MutableList中移除元素

我有以下代码,我需要在视图中显示列表的元素,然后从列表中删除这些项目。 我一直在考虑在kotlin过滤器vs地图,但没有运气找到一个解决方案。 var mutableList: MutableList<Object> = myImmutableList.toMutableList() for (x in mutableList.indices) { val tile = row!!.getChildAt(x % 4) val label = tile.findViewById(android.R.id.text1) as TextView label.text = mutableList[x].name val icon = tile.findViewById(android.R.id.icon) as ImageView picasso.load(mutableList[x].icon).into(icon) }

在外部范围内列出过滤器 – KOTLIN

我刚开始学习科林,我偶然发现了这个小问题。 我有一个对象列表,并在指定范围内筛选列表。 能够获得范围内的对象,但是当我将范围更改为外部边界,获取一个空数组, 所以为了保持简单的问题,可以说我有一个整数列表 original list [1, 2, 3, 4, 5, 6, 7] 并有一个吸管功能,它过滤出的元素 工作条件 fun dropper(args: ArrayList<Int>): List<Int> { return args.filter { it in 2..6 } // it >= 2 && it <= 6 } 输出被接收为 [2, 3, 4, 5, 6] 但是当我改变范围 fun dropper(args: ArrayList<Int>): List<Int> { return args.filter { it in 4..2 } […]

Kotlin(Mutable)List <(raw)kotlin.Any?>强制转换为List <JsonObject>

在我的代码中我得到一个io.vertx.core.json.JsonArray,我想有一个JsonObjects列表。 所以在Java中,我调用jsonarray.getList()并获取List – getList()返回一个java.util.List。 所以在Kotlin var list: List<JsonObject> = jsonArray.getList() 但我得到一个错误 Type mismatch: inferred type is kotlin.collections.(Mutable)List<(raw) kotlin.Any?>! but kotlin.collections.List<io.vertx.core.json.JsonObject> was expected 我能施展吗? 谢谢

在Kotlin中,如何在迭代时修改列表的内容

我有一个列表: val someList = listOf(1, 20, 10, 55, 30, 22, 11, 0, 99) 我想在修改一些值的时候迭代它。 我知道我可以用map做,但是做了一个副本。 val copyOfList = someList.map { if (it <= 20) it + 20 else it } 我如何在没有副本的情况下做到这一点? 注意: 这个问题是由作者故意写的和回答的( 自我回答的问题 ),所以对于常见的Kotlin话题的习惯性的回答是在SO中。 此外,为了澄清一些真正的古老的答案写为科特林的阿尔法,是不是今天的Kotlin准确。

如何克隆或复制kotlin中的列表

如何在kotlin中复制列表…我正在使用 val selectedSeries = mutableListOf<String>() selectedSeries.addAll(series) 有更简单的方法吗?

Kotlin prepend元素

我正在寻找Kotlin替代: (cons 1 '(2 3))在lisp或 1 : [2, 3]在haskell或 1 :: List(2, 3)在斯卡拉, (所有的结果都像[1,2,3]) 所以我可以在List<T> (或者其他你可以提供的列表)中添加一个元素。 如果可以提供O(1) head和tail Kotlin替代品(我刚刚发现first() ),也是没有问题的。