问题分析
在面试过程中遇到的xx技术和xx技术的异同点问题。
大家必须要深刻了解这两种技术的特征和优缺点,如果单纯的去背诵,很难记住。
这个问题中,List大家都已经非常熟悉了。简单分享一下SortedSet(如图)。
在Java的整个集合体系中,集合可以分成两个体系,一个是Collection存储单个对象的集合,另一个是k-v结构的Map集合。
SortedSet是Collection体系下Set接口下的派生类,而Set集合的特征是不包含重复的元素的集合。
了解了这个特点,才能更加准确的回答这个问题。
问题解答
首先说一下相同点:
1、都可以用来存储一组有序的元素。
2、都支持随机访问和按照索引位置插入元素。
3、都是派生自Collection接口
不同点:
1、SortedSet是一个有序的集合,不允许元素的重复,而List是一个有序的列表,允许元素的重复。
2、SortedSet可以按照元素的自然顺序或者自定义比较器进行排序,而List只能按照元素的添加顺序排序。
3、在 SortedSet中,元素的添加和删除操作的时间复杂度为O(logn),而在List中,元素的添加和删除操作的时间复杂度为O(n),因为需要移动其他元素的位置。
4、SortedSet可以方便地进行范围查询操作,例如获取某个区间内的元素,而List只能通过遍历实现范围查询。