gpt4 book ai didi

java - 在运行时更改 TreeMap 的比较器

转载 作者:行者123 更新时间:2023-11-29 07:42:42 29 4
gpt4 key购买 nike

我看到设置比较器的唯一方法是通过 TreeMap 构造函数。例如:

 TreeMap myMap = new TreeMap(myComparator);

但是,我想决定在运行时使用哪种类型的比较器。我可以创建多个 TreeMap 或一个的新实例,但我发现它会留下更大的内存占用空间。

有办法实现吗?还是我这边存在设计缺陷?

最佳答案

我建议您推迟TreeMap 的创建,直到您知道哪个Comparator 是合适的。如果这是不可能的(例如,因为您需要使用对 TreeMap 的引用来初始化其他对象),请考虑将 TreeMap 隐藏在将延迟初始化它的方法或类后面,或使用工厂模式。

如果这也是不可能的,请使用您自己的Comparator 实现初始化TreeMap,并在那里做出决定(compareTo() 不会'在您开始将项目添加到 TreeMap 之前不会被调用)。如果您走这条路,您必须非常小心,不要在开始向树中添加项目后更改比较器的行为!

至于为什么 TreeMap(或大多数其他采用Comparator 的集合)不允许您更改Comparator ,请参阅@Evgeniy Dorofeev 的回答。

关于java - 在运行时更改 TreeMap 的比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689200/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com