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

以有序的方式在linkedHashSet中进行有序插入?

范朗
2023-03-14
问题内容

所以我有一个LinkedHashSet,其值说a1,a2,,b,c1,c2

我想用x替换b,这样x的顺序应该与b的顺序相同。

一种明显的方式是

 private LinkedHashSet<String> orderedSubstitution(final Set<String> originalOrderedSet, final String oldItem,
            final String newItem) {
        final LinkedHashSet<String> newOrderedSet = new LinkedHashSet<String>();
        // Things we do to maintain order in a linkedHashSet
        for (final String stringItem : originalOrderedSet) {
            if (stringItem.equals(oldItem)) {
                newOrderedSet.add(newItem);
            } else {
                newOrderedSet.add(stringItem);
            }
        }
        return newOrderedSet;
    }

不仅这是O(n),我还 觉得 这不是最快的方法。有更好的解决方案吗?注意:我必须使用linkedHashMap。


问题答案:
  1. 创建一个结构图
  2. 插入所有字符串
  3. 通过在当前字符串的OrderOfTheString之后添加一个小的Delta来插入新的String。
  4. 将地图转换为LikedHashSet

我知道它很复杂,但是当我们链接〜1000000个元素的哈希映射并且大约要插入1000个元素时,它肯定会更好。



 类似资料:
  • 问题内容: 我想知道是否有可能对LinkedHashSet进行排序。我已经试过了 但是,这只会引发一个错误,无法将其强制转换为列表。有没有办法做到这一点,还是应该使用其他数据结构? 问题答案: 如果您关心基于比较的排序(例如,排序的排序),则应使用诸如或。 甲蜜饯顺序基于 插入顺序 。 如果您真的想使用,可以通过实际构造a将LHS转换为List (尽管问题并没有告诉我们的类型,所以我假设它是) 但

  • 问题内容: 有没有办法以编程方式对JTable进行排序? 我的JTable排序工作正常(使用setRowSorter),以便当用户按任意列时,表将被排序。 我知道,SWingX JXTable可能可以工作,但我不想麻烦,因为其他所有事情现在都可以正常工作,而且我不知道NetBeans的可视化编辑器如何处理JXTable等。 编辑: 选定的答案是指我的声明(现已删除),该声明对Sun的页面的答案不起

  • 问题内容: 假设我们在集合中有一些项目,并且我们想使用某些比较器对它们进行排序,并期望结果在列表中: 一种方法是对列表中的项目进行排序,例如: Anothe方法正在使用排序流: 我想知道哪种方法更有效?排序流是否有任何优势(例如在多核上进行Faste排序)? 在运行时复杂性方面/最快方面是高效的。 我不相信自己要实现一个完美的基准,学习并不能真正启发我。 问题答案: 可以肯定地说,两种形式的排序都

  • 问题内容: 我有一个类型字段。即使它是type ,它也存储带有可选前导零的整数值。排序按字典顺序排序(在之前)。如何订购的数值(来之前)? 当前,我使用查询: 问题答案: 有几种方法可以做到这一点: 将它们存储为数值而不是字符串。您已经打折了,因为您希望保持字符串像完整的前导零。 按字符串顺序转换为数字。这将起作用,但请注意,这对于大型数据库而言是性能的杀手er。每行函数的扩展性不是很好。 添加第

  • 我想创建一个程序,该程序以排序方式(给定指向最后一个元素的指针)将数据插入单循环链表中。我已经写了代码,试着调试它,但是没有发现到底出了什么问题。我得到的输出是56779