我们知道我们可以使用
Collections.sort
Run Code Online (Sandbox Code Playgroud)
在插入所有元素后对列表进行排序.
但如果元素一次插入一次,也许SortedMap更有效?
虽然,SortedMap缺乏subList方法.
我需要的是SortedMap能够有效地多次插入少量元素的东西,并且总是可以通过Comparator接口从上到下获得1~1000个子列表.
有什么建议吗?
我认为 aSortedSet是 a ,NavigableSet而 a 又具有诸如subSet、tailSet、headSet、ceiling和 之类的方法floor来解决此类问题。
所以你可以这样做:
SortedSet<Integer> set = new TreeSet<>(Arrays.asList(0,1,2,3,4,5,6,7,8,9));
SortedSet<Integer> subset = set.subSet(3,7);
System.out.println(subset); //[3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
显然,您可以使用TreeSet任何Comparator您想要的内容来创建您,并按照您认为更方便的顺序执行搜索。
Comparator<Integer> reverse = Collections.reverseOrder();
SortedSet<Integer> set = new TreeSet<>(reverse);
//same thing here
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |