Java有效地存储大量的排序数据

时间:2014-10-08 09:37:44

标签: java performance arraylist set

通常,当我想在java中存储大量数据时,我使用Set<String>,这非常快速有效。

 Set<String> example = new HashSet<String>();

但问题是它无法排序。我无法使用Lists因为我存储了大量数据(100,000个),使用List会严重影响我的程序性能。

ArrayList<String> example = new ArrayList<String>()

还有另一种方法吗?我需要对数据进行排序(按日期说),并且新元素会不断添加到List

3 个答案:

答案 0 :(得分:2)

您可以使用TreeSet,它是Set
的实现 它使用可比较的自然顺序或给定的比较器来命令元素。

Set example = new TreeSet();

检查api here

答案 1 :(得分:1)

您可以使用TreeSet!使用TreeSet并逐个添加值。当您获得值时,它将为您提供数据的已排序值。

答案 2 :(得分:0)

如果您只想以排序的形式保存数据,那么最有效的解决方案是:

  1. 将数据加载到ArrayList
  2. 复制到数组。
  3. 使用Arrays.sort对数组进行排序。
  4. 要搜索,请使用&#34;二分搜索&#34;这是O(logN)
  5. 如果您希望能够构建散布构建和搜索,请使用TreeSet。这会占用更多内存,但对于逐步构建的集合,它会更快,搜索性能也大致相同。

相关问题