我需要将已排序的数据写入文件。数据(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);
那么哪种方法更好,更有效?
答案 0 :(得分:3)
“哪种方法更好”的答案在很大程度上取决于你需要一种方法的目的。
ip_Object_List
创建一次,之后从未更改过,那么Collection.sort
方法更有效,因为升迭代运行得更快map
经常更新,并且您始终希望按排序顺序访问它,则TreeMap<>
表示可能会更快,具体取决于您迭代它的频率。您采取的方法在性能和效率方面可能会有所不同,因此选择哪一种方法对您来说更舒适。只有当分析器运行告诉代码在您选择的结构中花费太多CPU或内存时,才应考虑替代表示。
答案 1 :(得分:1)
这些都是O(n log n)操作。使用Collections.sort()不需要额外的空间,而TreeMap将使用O(n)空间来维护地图。如果要经常添加,则对列表进行排序,然后TreeMap更好 - 每个新插入只有O(log n)。保持数据结构允许您快速搜索元素并对数据集执行各种其他操作。
因此,如果您要访问和修改已排序的集合,请使用TreeMap,否则只需对其进行排序。