import java.util.Arrays;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
TreeSet<String> states = new TreeSet<>();
states.add("Germany");
states.add("France");
states.add("Italy");
states.add("Spain");
states.add("Great Britain");
System.out.println(states);
// возвращаем набор в котором все элементы меньше текущего
SortedSet<String> setLower=states.headSet("Germany");
System.out.println("Это headSet " + setLower);
// возвращаем набор в котором все элементы больше текущего
SortedSet<String> setGreater=states.tailSet("Germany");
System.out.println("Это tailSet " + setGreater);
// получим поднабор от одного элемента до другого
SortedSet<String> set = states.subSet("Germany", "Italy");
System.out.println("Это subSet " + set);
}
}
我将从headSet:
这是我添加后的排序方式。
[France, Germany, Great Britain, Italy, Spain]
headSet工作正常,这是我读到的关于这个方法的内容:
返回一个集合,其中所有元素都小于当前元素
输出到控制台:
Это headSet [France]
原来,如果我们排在第二位,那么仅仅因为她排在第Germany一位就意味着比他(现在的那个)少?France这就是为什么它带来了法国?
tailSet:
返回一个集合,其中所有元素都大于当前元素
输出到控制台:
Это tailSet [Germany, Great Britain, Italy, Spain]
原来tailSet方法显示的是当前元素和大于它的元素?也就是说,我们Germany排在第 2 位,但排Great Britain在第Italy3、4 和Spain5 位。为什么我们得到:[德国、英国、意大利、西班牙] 而不是 [英国、意大利、西班牙]?
subSet:
从一个元素到另一个元素的子集
输出到控制台:
Это subSet [Germany, Great Britain]
但我不明白为什么?Germany据说我们从到写到,为什么在控制台里Italy出来了?为什么不只?GermanyGreat BritainGreat Britain
我看到了这个设计:
SortedSet<String> setLower=states.headSet("Germany");
像这样:
`setLower.headSet("Germany");` ?
为什么要立即写给构造函数?
我也见过这样的事情:
Set setLower = states.headSet("Germany");<br>
这个构造和SortedSet有什么区别?

Set是派生SortedSet、HashSet等的接口。这样的构造似乎是多态性。这种设计的主要优点之一是您可以随时将您的收藏类型更改为其他类型:sortSet = hashSet;.这些问题将帮助您更详细地弄清楚:
ArrayList 有什么不同 ArList = new ArrayList();
投掷
多态性在实践中是如何应用的?
您在哪里看到构造函数中的条目?
states.headSet(...)返回包含某些元素的集合。setLower- 现在是指向此集合的链接。关于其余部分 - 正如已经写过的那样,“方法工作的描述与文档不一致,这就是所有理解问题的原因。” 如果您的英语不好 - 其中一种方法是下载自动翻译的扩展程序,例如Google Translate,然后阅读英文文档。
这些方法如何在您的源代码中工作的描述并不是最好的。
文档说得更清楚:
SortedSet<E> headSet(E toElement):SortedSet<E> tailSet(E fromElement):SortedSet<E> subSet(E fromElement, E toElement):在一般情况下,如果指定了 A 和 B 的边界(其中一个可以是集合的开头或结尾),则范围 [A; B) (包括左边界,不包括右边界)。一方面,这样做只是因为它是习惯性的,另一方面,这样的分区将允许您“粘合”一组零件,而无需考虑分段的边界。