我应该用什么java数据结构来排序这些数据?
问题描述:
我使用Facebook SDK
为Android
来拉取给定用户的朋友列表。问题在于朋友按userid
排序(对最终用户无用)。我需要他们按字母顺序排序。我应该用什么java数据结构来排序这些数据?
目前,我在JSONArray
列表中,我想知道什么样的数据结构,我应该把名称放入以达到最佳排序。所以我们需要考虑插入时间,排序时间和取数时间。
从阅读其他类似的情况在线,我目前倾向于TreeSet
,但这只是一个预感。你们都在想什么?
答
我会使用TreeSet
,但不是出于性能原因。 TreeSet
implements SortedSet
所以你有你的用户列表总是按照给定的比较器进行排序。 和Set
也可以很容易地进行更新:只需将所有新用户放入该集合,而不管他们是否已在。集不包含重复。
因为没有人会拥有如此巨大的朋友列表,所以我不会在此考虑第二个表现。
答
我会使用TreeMap或HashMap(或每个TreeSet-HashSet的集合实现)。不过,您需要执行Comparable或使用Comparator来排序才能工作。关于速度,我认为你不会面对任何重大问题,除非你处理的是数据量很大的数据。
尝试一下。如果你觉得太慢,试试别的。你认为你需要排序多少个朋友?除非数以百万计,否则我会使用最简单的一种。 – 2011-06-09 21:51:38
如果你只插入一次数据,那么我会尝试一个TreeMap。然而,如果你做了很多插入操作,那么我会使用HashMap,因为它具有更好的插入速度:O(1)vs O(n log n) – joekarl 2011-06-09 22:03:39
为什么你想要一个地图来保存一个列表?只需使用一个列表和Collections.sort()即O(nlogn) – aromero 2011-06-09 22:05:24