假设有一个`TreeSet`集合,存储了实现了`Comparable`接口的自定义对象`MyObject`。这些`MyObject`对象根据其内部属性`value`进行排序。现有一个集合包含了`MyObject(value=5)`, `MyObject(value=2)`, `MyObject(value=8)`, `MyObject(value=2)`。请问,该集合的`size()`方法返回的值是多少?以及如果使用`remove(new MyObject(value=2))`,之后集合的元素个数和第一个元素的值?
答案解析
`TreeSet`不允许重复元素,根据`Comparable`的实现来判断重复性,此处是`value`值。所以初始的`MyObject(value=2)`重复,不会被添加。初始集合有3个元素,分别是`MyObject(value=2)`, `MyObject(value=5)`, `MyObject(value=8)`,因此`size()`返回3。`remove(new MyObject(value=2))`将删除集合中`value`为2的元素,此时集合剩下2个元素,`MyObject(value=5)`变成第一个元素。
选项B和D错误,初始`TreeSet`不会重复添加`MyObject(value=2)`;选项A错误,虽然初始size为3,但是删除后的第一个元素是`MyObject(value=5)`。
正确答案:C