当前位置: 首页 > 面试题库 >

在对象更改值时保持TreeSet排序

翟聪
2023-03-14
问题内容

我有一个使用Comparable <>定义“自然排序顺序”的对象。这些都存储在TreeSet中。

除了删除和重新添加对象外,还有用于更新排序定义成员的成员时更新排序的另一种方法吗?


问题答案:

正如其他人指出的那样,没有内置方法。但是,您始终可以使用您选择的构造函数将该TreeSet子类化,并添加所需的功能:

public class UpdateableTreeSet<T extends Updateable> extends TreeSet<T> {

    // definition of updateable
    interface Updateable{ void update(Object value); }

    // constructors here
    ...

    // 'update' method; returns false if removal fails or duplicate after update
    public boolean update(T e, Object value) {
       if (remove(e)) {
           e.update(value);
           return add(e);
       } else { 
           return false;
       }
    }
}

从那时起,您将必须调用((UpdateableTreeSet)mySet).update(anElement, aValue)以更新排序值和排序本身。这确实需要您update()在数据对象中实现其他方法。



 类似资料:
  • 问题内容: 有没有一种方法来保存更改,例如更改跨越多个标签的HTML文本的背景,以便在再次加载时将所做的更改反映在HTML页面中。 编辑:详细说明。 加载HTML页面后,将使用range对象和executeCommand选择并突出显示文本: 更改(将文本突出显示为黄色)将一直保留,直到重新加载页面为止。但是,当重新加载页面时,这些更改不存在。我想要以某种方式保存这些更改(例如在本地DB sqlit

  • 问题内容: 我想使用abs()对元组进行排序,而无需实际将元组的元素更改为正值。 根据python Wiki(https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions),sorted(list,key =)函数假定使用参数 key 进行排序,而实际上并未更改清单。但是,abs()只需要int(),如果我需要这样做,我还没有想办法将元组变成i

  • 问题内容: 我有一些最初存储在通用Javascript对象中的数据,其ID为键: 但是,我发现浏览器在循环浏览时并不能保证特定的对象顺序,因此在上面的“ 3”将出现在“ 7”之前。我改用这样的数组格式: 现在,我可以按正确的顺序循环,但是不能进行快速查找,例如,不必循环遍历数组。 是否有结合两种方法的好方法?我宁愿避免为每种格式使用单独的对象,因为该对象非常大(数百个元素)。 问题答案: 我也遇到

  • 问题内容: 当我从一个视图控制器移动到另一个视图控制器时,第一个控制器上的开关会重置自身,并且不会保持其状态。查看其他控制器后,如何恢复状态?以及在关闭应用程序后如何使其保存状态。我看过各种stackOverflow问题和响应以及Apple文档,但似乎没有任何效果。 这是我的带有开关的View Controller的类。 我是Swift和Xcode的初学者。预先感谢您的时间和帮助:) 问题答案:

  • 问题内容: 我正在寻找一种按特定列的绝对值对熊猫数据框进行排序的简单方法,但实际上并未更改数据框内的值。类似的东西。因此,如果我有一个像这样的数据框: 在对’b’进行排序时所得的排序数据看起来像: 问题答案: 更新 由于和 已被弃用(感谢@Ruggero Turra),您现在可以使用它来实现:

  • 我试图向ArrayList对象添加构造函数有3个参数(int,int,hashset)的对象。当我添加一个新对象时,哈希集中的值会发生某种变化,所以我添加了错误的值。例如,我创建3个对象,添加这3组整数: 但object会收到这些: 我不明白为什么集合会改变其值。这是函数代码: 在这段代码中我: > 获取对象的ArrayListallIndexedItems,描述文本中的单词(文本在mysql表中