我应该将哪个 Android / Java 集合用于排序的键值对,以及给定点之后的 return 元素
Which Android / Java Collection should I use for sorted keys value pairs, and to return elements after given point
假设我有一个键列表,其中都包含这样一个对象:
2、4、5、9、11
我需要订购它们,因为我想做类似的事情:
function Object[] getObjectsAfter( int i );
// so 4 would result in an array of objects in the keys 5, 9 and 11
和
function Object[] getObjectsBefore( int i );
// so 4 would result in an array of objects in the keys 2
在Android中最好使用什么集合?我尝试了 SparseArray 和 TreeMap,但我找不到从某个点开始迭代的方法。
如果你...
- ...需要对元素进行排序
- ...不想重复
- ...希望能够从特定点开始迭代
你可以使用 TreeSet
.
演示:
TreeSet<Integer> ints = new TreeSet<>(Arrays.asList(2,4,5,9,11));
System.out.println(ints.tailSet(4, false)); // [5, 9, 11]
System.out.println(ints.headSet(4, false)); // [2]
(如果您想要 Map
,可以将 TreeMap
与 tailMap
和 headMap
一起使用。)
您可以使用 SortedSet,它是一个进一步提供其元素总排序的集合。这些元素使用它们的自然顺序或通常在排序集创建时提供的比较器进行排序(doc here)。
假设我有一个键列表,其中都包含这样一个对象:
2、4、5、9、11
我需要订购它们,因为我想做类似的事情:
function Object[] getObjectsAfter( int i );
// so 4 would result in an array of objects in the keys 5, 9 and 11
和
function Object[] getObjectsBefore( int i );
// so 4 would result in an array of objects in the keys 2
在Android中最好使用什么集合?我尝试了 SparseArray 和 TreeMap,但我找不到从某个点开始迭代的方法。
如果你...
- ...需要对元素进行排序
- ...不想重复
- ...希望能够从特定点开始迭代
你可以使用 TreeSet
.
演示:
TreeSet<Integer> ints = new TreeSet<>(Arrays.asList(2,4,5,9,11));
System.out.println(ints.tailSet(4, false)); // [5, 9, 11]
System.out.println(ints.headSet(4, false)); // [2]
(如果您想要 Map
,可以将 TreeMap
与 tailMap
和 headMap
一起使用。)
您可以使用 SortedSet,它是一个进一步提供其元素总排序的集合。这些元素使用它们的自然顺序或通常在排序集创建时提供的比较器进行排序(doc here)。