【问题标题】:What Collection to use when searching and sorting搜索和排序时使用什么集合
【发布时间】:2011-10-10 09:44:38
【问题描述】:

有很多关于在 stackoverflow 上搜索集合的帖子。这里也有很多关于对集合进行排序的帖子。我正在寻找一种可以同时处理这两种情况的解决方案(数据结构)。地图非常适合搜索(即 map.containsKey(key)、map.get(key))。 ArrayLists 非常适合排序(使用简单的比较器)。 我的程序将元素添加到 HashMap(使用 .containsKey(key) 检查是否存在欺骗)。然后将映射值分配给 Arraylist。这很简单(一行代码),但效率极低。它使用两倍的内存。

程序需要唯一元素,但是重复元素呢?我已经扫描了 Javadocs,发现有很多 Collection 类型可以满足你的任何需求(map、list、table、set、tree、vector、priorityqueue——不管是什么)。是否有一个 Java 集合可以处理搜索和排序,包括重复元素?

【问题讨论】:

  • 所以你要按键搜索,然后按值排序,这样对吗?

标签: java search sorting collections


【解决方案1】:

你考虑过TreeMap吗?

地图根据其键的自然顺序排序,或者根据地图创建时提供的Comparator 排序,具体取决于使用的构造函数。

【讨论】:

  • 看起来像 TreeMap 将用于搜索和排序键。它具有 .containsKey(key) 和 .get(key) 方法,以及在实例化期间使用 Comparator 的排序/排序功能,以始终保持键的顺序。
  • 等一下...对 VALUES 进行排序怎么样?
【解决方案2】:

您是否尝试过TreeMap。它们将非常适合搜索(O(ln n)),并且将围绕您可以使用 .values() 方法获得的比较器进行排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多