【问题标题】:What java data structure should I use to sort this data?我应该使用什么 java 数据结构来对这些数据进行排序?
【发布时间】:2011-06-09 21:37:16
【问题描述】:

我使用Facebook SDK 代表Android 来拉取给定用户的朋友列表。问题是朋友按userid 排序(对最终用户无用)。我需要它们按字母顺序排序。

目前,我在JSONArray 中有列表,我想知道应该将名称放入哪种数据结构中以实现最佳排序。所以我们需要考虑插入时间、排序时间、提取时间

通过在线阅读其他类似情况,我目前倾向于TreeSet,但这只是一种预感。大家觉得呢?

【问题讨论】:

  • 尝试一下。如果您认为它太慢,请尝试其他方法。你认为你需要排序多少个朋友?除非是数百万,否则我会使用最简单的那种。
  • 如果您只插入一次数据,那么我会尝试使用 TreeMap。但是,如果您要进行大量插入,那么我会使用 HashMap 因为它的插入速度会更快:O(1) vs O(n log n)
  • 为什么要一张地图来保存一个列表?只需使用 O(nlogn) 的列表和 Collections.sort()
  • @aromero,我的意思是 TreeSet。对不起。 OP 已修复。

标签: java android json sorting data-structures


【解决方案1】:

我会使用TreeSet,但不是出于性能原因。 TreeSet 实现了SortedSet,因此您的用户列表始终使用正确的比较器进行排序。 并且Set 也使更新变得容易:只需将所有新用户放入集合中,无论他们是否已经在集合中。集合不包含重复项。

我不会考虑这里的性能,因为没有人会拥有如此庞大的朋友列表,它会有所作为。

【讨论】:

    【解决方案2】:

    我会使用TreeMapHashMap(或每个TreeSet-HashSet 的集合实现)。不过,您需要实现Comparable 或使用Comparator 才能进行排序。关于速度,我认为除非您处理大量数据,否则您不会面临任何重大问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多