2011-06-09 62 views
0

我使用Facebook SDKAndroid来拉取给定用户的朋友列表。问题在于朋友按userid排序(对最终用户无用)。我需要他们按字母顺序排序。我应该用什么java数据结构来排序这些数据?

目前,我在JSONArray列表中,我想知道什么样的数据结构,我应该把名称放入以达到最佳排序。所以我们需要考虑插入时间,排序时间和取数时间

从阅读其他类似的情况在线,我目前倾向于TreeSet,但这只是一个预感。你们都在想什么?

+0

尝试一下。如果你觉得太慢,试试别的。你认为你需要排序多少个朋友?除非数以百万计,否则我会使用最简单的一种。 – 2011-06-09 21:51:38

+0

如果你只插入一次数据,那么我会尝试一个TreeMap。然而,如果你做了很多插入操作,那么我会使用HashMap,因为它具有更好的插入速度:O(1)vs O(n log n) – joekarl 2011-06-09 22:03:39

+0

为什么你想要一个地图来保存一个列表?只需使用一个列表和Collections.sort()即O(nlogn) – aromero 2011-06-09 22:05:24

回答

2

我会使用TreeSet,但不是出于性能原因。 TreeSet implements SortedSet所以你有你的用户列表总是按照给定的比较器进行排序。 和Set也可以很容易地进行更新:只需将所有新用户放入该集合,而不管他们是否已在。集不包含重复。

因为没有人会拥有如此巨大的朋友列表,所以我不会在此考虑第二个表现。

2

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

相关问题