这是获取排序数据的更好方法

时间:2015-09-17 14:54:36

标签: java sorting arraylist treemap

我需要将已排序的数据写入文件。数据(IP对象)基于IP(字符串,IP对象的属性)进行排序。

所以我有两个选择:使用TreeMap并将数据插入到treeMap中,或者在获取所有数据然后对其进行排序之后。

 func saveTask(sender:UIButton!) {

        let cell = tableView.cellForRowAtIndexPath(selectedIndexPath)
        self.cellData["titolo"] = cell.LittleTextCell.textView.text
        self.cellData["oggetto"] = cell.BigTextCell.textView.text
  }

只将所有对象存储在ArrayList中,然后将sort方法调用为

Map<String, IPObject>> map = new TreeMap<>(new IPComparator);

那么哪种方法更好,更有效?

2 个答案:

答案 0 :(得分:3)

“哪种方法更好”的答案在很大程度上取决于你需要一种方法的目的。

  1. 如果您的ip_Object_List创建一次,之后从未更改过,那么Collection.sort方法更有效,因为升迭代运行得更快
  2. 如果您的map经常更新,并且您始终希望按排序顺序访问它,则TreeMap<>表示可能会更快,具体取决于您迭代它的频率。
  3. 您采取的方法在性能和效率方面可能会有所不同,因此选择哪一种方法对您来说更舒适。只有当分析器运行告诉代码在您选择的结构中花费太多CPU或内存时,才应考虑替代表示。

答案 1 :(得分:1)

这些都是O(n log n)操作。使用Collections.sort()不需要额外的空间,而TreeMap将使用O(n)空间来维护地图。如果要经常添加,则对列表进行排序,然后TreeMap更好 - 每个新插入只有O(log n)。保持数据结构允许您快速搜索元素并对数据集执行各种其他操作。

因此,如果您要访问和修改已排序的集合,请使用TreeMap,否则只需对其进行排序。