工具类优化

This commit is contained in:
zxj
2025-07-28 17:35:21 +08:00
parent cc317117bc
commit 9a89fff9dd
2 changed files with 33 additions and 28 deletions
@@ -15,19 +15,17 @@ object GlobalData {
/** /**
* 横排数量 * 横排数量
*/ */
var arrayCross: Int = 5 var arrayCross: Int = 2
/** /**
* 竖排数量 * 竖排数量
*/ */
var arrayVertical: Int = 11 var arrayVertical: Int = 11
/** /**
* 排列方式 0 垂直 1 水平 * 排列方式 0 垂直 1 水平
*/ */
var arrayMode: Int = 0 var arrayMode: Int = 0
} }
/** /**
@@ -18,26 +18,19 @@ object ListArrangementUtil {
defaultValue: EquipmentUserInfo = EquipmentUserInfo() defaultValue: EquipmentUserInfo = EquipmentUserInfo()
): List<EquipmentUserInfo> { ): List<EquipmentUserInfo> {
Timber.d("horizontalSortPageItem") Timber.d("horizontalSortPageItem")
// 填充缺失的数据,确保能被 columns 整除 require(columns > 0) { "Columns must be positive" }
val filledList = if (list.size % columns != 0) {
list + List(columns - (list.size % columns)) { defaultValue }
} else {
list
}
val filledList = list.padToMultiple(columns, defaultValue)
val chunks = filledList.chunked(columns) val chunks = filledList.chunked(columns)
return (0 until columns) return (0 until columns)
.windowed(2, 2, partialWindows = true) .windowed(2, 2, partialWindows = true)
.flatMap { group -> .flatMap { group ->
when (group.size) { when (group.size) {
2 -> chunks.flatMap { listOf(it[group[0]], it[group[1]]) } 2 -> chunks.flatMap { listOf(it[group[0]], it[group[1]]) }
1 -> chunks.flatMap { 1 -> chunks.flatMap {
listOf( listOf(it[group[0]], EquipmentUserInfo(equipmentBoxCode = null))
it[group[0]],
EquipmentUserInfo(equipmentBoxCode = null)
)
}.dropLast(1) }.dropLast(1)
else -> error("Unexpected group size") else -> error("Unexpected group size")
} }
} }
@@ -48,18 +41,12 @@ object ListArrangementUtil {
*/ */
fun verticalSortItem(list: List<EquipmentUserInfo>): List<EquipmentUserInfo> { fun verticalSortItem(list: List<EquipmentUserInfo>): List<EquipmentUserInfo> {
Timber.d("verticalSortItem") Timber.d("verticalSortItem")
val users = if (list.size % 2 != 0) { val users = list.padToEvenSize()
Timber.d("列表长度必须是偶数")
list + EquipmentUserInfo()
} else {
list
}
val half = users.size / 2 val half = users.size / 2
val firstHalf = users.take(half)
val secondHalf = users.drop(half)
return firstHalf.zip(secondHalf) { a, b -> listOf(a, b) }.flatten() return users.take(half)
.zip(users.drop(half)) { a, b -> listOf(a, b) }
.flatten()
} }
/** /**
@@ -70,12 +57,32 @@ object ListArrangementUtil {
cols: Int cols: Int
): List<EquipmentUserInfo> { ): List<EquipmentUserInfo> {
Timber.d("convertToColumnFirst") Timber.d("convertToColumnFirst")
require(cols > 0) { "Columns must be positive" }
val rows = ceil(original.size.toDouble() / cols).toInt() val rows = ceil(original.size.toDouble() / cols).toInt()
return List(original.size) { pos -> return List(original.size) { pos ->
val row = pos % rows original.getOrNull(pos % rows * cols + pos / rows) ?: EquipmentUserInfo()
val col = pos / rows }
val originalPos = col + row * cols }
original[originalPos]
// 提取的扩展函数
private fun List<EquipmentUserInfo>.padToMultiple(
multiple: Int,
defaultValue: EquipmentUserInfo
): List<EquipmentUserInfo> {
return if (size % multiple != 0) {
this + List(multiple - (size % multiple)) { defaultValue }
} else {
this
}
}
private fun List<EquipmentUserInfo>.padToEvenSize(): List<EquipmentUserInfo> {
return if (size % 2 != 0) {
Timber.d("列表长度必须是偶数")
this + EquipmentUserInfo()
} else {
this
} }
} }
} }