在Java或Kotlin中,如何创建尽可能多的子列表?如果范围大于列表的大小,它应该忽略超出范围的部分。
我目前有(Kotlin):
val list: List = arrayListOf(1, 2, 3, 4)
list.subList(0, 3) // -> [1, 2, 3]
list.subList(0, 5) // -> IndexOutOfBoundsException
list.subList(0, 200) // -> IndexOutOfBoundsException
list.clear()
list.subList(0, 3) // -> IndexOutOfBoundsException
我想(Kotlin):
val list: List = arrayListOf(1, 2, 3, 4)
list.subList(0, 3) // -> [1, 2, 3]
list.subList(0, 5) // -> [1, 2, 3, 4]
list.subList(0, 200) // -> [1, 2, 3, 4]
list.clear()
list.subList(0, 3) // -> []
4条答案
按热度按时间pxy2qtax1#
你可以在
List<T>
上写一个扩展来完成这个逻辑:这使用
coerceAtMost
来限制最高值。并称之为:
或者像@gidds建议的那样,我们可以让它更安全:
这个版本防止在两端指定超出范围的数字,如果传入的数字是from〉to,它将从
subList
抛出一个IllegalArgumentException
。blmhpbnm2#
在Kotlin你可以
如果愿意,可以检查
take
的实现。9rbhqvlz3#
数组列表是在数组上实现的,所以你不能得到比真实的数量多的子列表。
这意味着,您只能获得0 - 4之间的范围
您可以尝试此操作以避免IndexOutOfBoundsException
jjhzyzn04#
这是工作。
示例)
结果)