使用基于计数的子列表对Java进行排序的集合

ruf*_*ang 5 java collections

我们知道我们可以使用

Collections.sort
Run Code Online (Sandbox Code Playgroud)

在插入所有元素后对列表进行排序.

但如果元素一次插入一次,也许SortedMap更有效?

虽然,SortedMap缺乏subList方法.

我需要的是SortedMap能够有效地多次插入少量元素的东西,并且总是可以通过Comparator接口从上到下获得1~1000个子列表.

有什么建议吗?

Edw*_*rzo 1

我认为 aSortedSet是 a ,NavigableSet而 a 又具有诸如subSettailSetheadSetceiling和 之类的方法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)