写一段代码证明 TreeSet构造函数什么都不传,
时间: 2024-05-13 20:16:02 浏览: 17
默认按照自然排序进行排序。也就是说,如果你向 TreeSet 中添加的是数字类型或字符串类型的元素,它们会按照从小到大的顺序排列。
以下是一个示例代码:
```java
import java.util.*;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Integer> set = new TreeSet<>();
set.add(5);
set.add(2);
set.add(8);
set.add(1);
set.add(10);
System.out.println(set); // 输出结果为 [1, 2, 5, 8, 10]
}
}
```
在上面的代码中,我们创建了一个 TreeSet 对象,并向其中添加了一些整数。由于我们没有传入任何比较器,因此默认按照自然排序进行排序,即从小到大排列。最终输出的结果也验证了这一点。
相关问题
写一段代码证明 TreeSet构造函数什么都不传,但是Person类要实现Comparable接口
假设我们有一个Person类,其中包含id、name和age三个属性,我们需要根据id进行比较排序,那么我们需要实现Comparable接口,并且重写compareTo方法。代码演示如下:
```
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet<Person> set = new TreeSet<>();
set.add(new Person(1, "Tom", 20));
set.add(new Person(2, "Jack", 22));
set.add(new Person(3, "Lucy", 21));
for (Person p : set) {
System.out.println(p);
}
}
}
class Person implements Comparable<Person> {
private int id;
private String name;
private int age;
public Person(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
@Override
public int compareTo(Person o) {
return this.id - o.id;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
在上面的代码中,我们创建了一个TreeSet对象,该对象的元素类型为Person。由于我们没有传递任何参数给TreeSet构造函数,因此TreeSet将会使用Person类的compareTo方法进行元素的比较和排序。因此,我们需要在Person类中实现Comparable接口,并重写compareTo方法,以便TreeSet可以正确地对元素进行排序。最后,我们往TreeSet中添加了3个Person对象,并使用for循环遍历输出了每个元素。输出结果如下:
```
Person{id=1, name='Tom', age=20}
Person{id=2, name='Jack', age=22}
Person{id=3, name='Lucy', age=21}
```
可以看到,TreeSet已经按照Person对象的id属性进行了升序排序。
写一个treeset的例子
以下是一个使用TreeSet的例子:
```java
import java.util.TreeSet;
public class TreeSetExample {
public static void main(String[] args) {
// 创建一个TreeSet实例,存储整数类型数据
TreeSet<Integer> treeSet = new TreeSet<>();
// 添加数据
treeSet.add(5);
treeSet.add(3);
treeSet.add(7);
treeSet.add(1);
treeSet.add(9);
// 输出TreeSet中的数据
System.out.println("TreeSet中的数据为:");
for (Integer num : treeSet) {
System.out.print(num + " ");
}
System.out.println();
// 获取并输出第一个元素
Integer first = treeSet.first();
System.out.println("第一个元素是:" + first);
// 获取并输出最后一个元素
Integer last = treeSet.last();
System.out.println("最后一个元素是:" + last);
// 获取并输出小于等于指定元素的最大元素
Integer floor = treeSet.floor(6);
System.out.println("小于等于6的最大元素是:" + floor);
// 获取并输出大于等于指定元素的最小元素
Integer ceiling = treeSet.ceiling(4);
System.out.println("大于等于4的最小元素是:" + ceiling);
// 删除指定元素
treeSet.remove(3);
// 输出删除指定元素后的TreeSet中的数据
System.out.println("删除元素3后TreeSet中的数据为:");
for (Integer num : treeSet) {
System.out.print(num + " ");
}
System.out.println();
}
}
```
输出结果为:
```
TreeSet中的数据为:
1 3 5 7 9
第一个元素是:1
最后一个元素是:9
小于等于6的最大元素是:5
大于等于4的最小元素是:5
删除元素3后TreeSet中的数据为:
1 5 7 9
```