【发布时间】:2022-01-07 09:08:32
【问题描述】:
我正在寻找一种在已排序列表中添加元素或移动现有元素的方法。
data class House(
val id: Int,
val sold: Boolean,
val creationDate: LocalDate,
...
)
我的列表已经按 2 个参数(sold 和 creationDate)排序。
Example of a list already sorted :
[
House(123, false, 2015-03-23, ...),
House(456, false, 2015-01-11, ...),
House(789, false, 2014-08-30, ...), // <- I'm looking for move this one
House(147, false, 2014-02-15, ...),
House(258, true, 2016-06-02, ...),
House(369, true, 2015-04-20, ...),
House(321, true, 2015-01-28, ...),
House(654, true, 2011-11-01, ...)
]
现在,如果房屋已售出,(ID 为 789 的房屋)如何在不重新排序所有列表的情况下将项目从列表的第一部分移动到另一部分。 (出于性能考虑) 这个新职位必须考虑关键的“creationDate”。
List updated :
[
House(123, false, 2015-03-23, ...),
House(456, false, 2015-01-11, ...),
House(147, false, 2014-02-15, ...),
House(258, true, 2016-06-02, ...),
House(369, true, 2015-04-20, ...),
House(321, true, 2015-01-28, ...),
House(789, true, 2014-08-30, ...), // <- Result expected
House(654, true, 2011-11-01, ...)
]
感谢您的帮助。
【问题讨论】:
-
你的目标是 JVM 吗?这听起来像是
PriorityQueue而不是列表的用例。 -
我认为仅对整个列表进行排序就不会成为性能问题。但是,是的,知道一种更有效的方法会很有趣