我研究了Java中的treeset,想知道treeset的.floor()和.lower()方法的区别,或者它们对treeset有完全相同的功能。
我尝试了整数,并从这两种方法得到了相同的输出。
.floor() 和 .lower() 通常会造成混淆,因为它们的行为相似,但功能不同。它们的区别如下: 总之,.floor() 返回小于或等于给定元素的最近元素,包括元素本身(如果存在)。相反,.lower() 返回严格小于给定元素的最接近元素,而不是元素本身。
.floor(E e) 方法: 此方法检索集合中小于或等于指定元素 e 的最大元素。如果不存在这样的元素(即集合中的所有元素都大于 e),则返回 null。 本质上,如果 e 在集合中,floor(e) 将返回 e。如果 e 不在集合中,它将返回小于 e 的最近元素。 .lower(E e) 方法: 此方法检索集合中严格小于指定元素 e 的最大元素。即使 e 是集合的元素,它也不会返回 e。 如果集合中没有元素小于 e(即 e 小于或等于集合中的所有元素),则返回 null。 举例说明: 考虑一个包含元素 {10, 20, 30, 40} 的 TreeSet:
使用.floor(): .floor(30) 返回 30,因为 30 等于指定元素并且位于集合中。 .floor(25) 返回 20,因为 20 是小于 25 的最大元素。 使用.lower(): .lower(30) 返回 20,因为 20 是严格小于 30 的最大元素。即使它是完全匹配,它也不考虑 30。 .lower(25) 返回 20 的原因与 Floor(25) 相同。