use*_*rbb 5 java collections subset comparator
是否有可能通过某个比较器获取集合过滤子集,并且父集合及其子集的每次更新都会得到所有更改?
该NavigableSet.subSet()调用可能会执行您想要的操作。NavigableSet是一个排序集,能够创建作为基础集“视图”的子集。这些视图受您提供的值(使用Comparator创建集合时提供的值)或值的自然顺序的限制。最常见的实现是TreeSet. 例如,您可以这样做:
NavigableSet<String> set = new TreeSet<>(
Arrays.asList("b", "e", "a", "d", "c"));
System.out.println(set);
Run Code Online (Sandbox Code Playgroud)
结果[a, b, c, d, e]如您所料。现在您可以创建一个子集,例如从“b”到“d”(包括“b”和“d”):
NavigableSet<String> set2 = set.subSet("b", true, "d", true);
System.out.println(set2);
Run Code Online (Sandbox Code Playgroud)
这里的输出是[b, c, d]. 现在,如果您向原始集合添加一些位于边界内部和外部的元素,子集视图将更改为仅包含添加到内部的内容:
set.add("a1");
set.add("c1");
set.add("e1");
System.out.println(set2);
Run Code Online (Sandbox Code Playgroud)
输出是[b, c, c1, d].
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |