java treeset实例化
时间: 2023-11-13 12:58:41 浏览: 41
Java TreeSet是一个基于TreeMap的Set集合,它实现了NavigableSet接口。TreeSet中的元素是按照一定顺序排列的,因此在使用时需要在自定义类中实现Comparable接口。下面是一个Java TreeSet的实例化代码:
```
Set<People> set = new TreeSet<>();
```
其中,People是自定义的类,实现了Comparable接口。在实例化时,可以通过构造函数传入一个Comparator对象,用于指定元素的排序方式。例如:
```
Set<People> set = new TreeSet<>(new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
return o1.age - o2.age;
}
});
```
这里使用了匿名内部类实现了Comparator接口,按照年龄从小到大排序。
相关问题
treeset 自定义排序
在 TreeSet 中实现自定义排序的方法是通过提供一个比较器(Comparator)来指定排序规则。可以通过以下步骤来实现:
1. 创建一个实现了 Comparator 接口的类,该类将定义自定义排序规则。
2. 在创建 TreeSet 时,将自定义的比较器传递给 TreeSet 构造函数。
例如,假设我们有一个 User 类,我们想根据用户的年龄和姓名来排序。我们可以创建一个名为 UserCompForAgeAndName 的类,实现 Comparator 接口,并在其中定义比较逻辑。然后可以使用以下代码创建一个使用自定义比较器的 TreeSet:
```java
TreeSet<User> userSet = new TreeSet<>(new User.UserCompForAgeAndName());
```
在上述代码中,User.UserCompForAgeAndName() 是自定义比较器的实例化。
现阶段Java实习的面试题
1. Java中的访问控制符有哪些?
Java中有四种访问控制符,分别是public、protected、default和private。
2. Java中的final关键字有什么作用?
final关键字可以用来修饰类、方法和变量。修饰类时表示该类不能被继承,修饰方法时表示该方法不能被重写,修饰变量时表示该变量只能被赋值一次。
3. Java中的static关键字有什么作用?
static关键字可以用来修饰类、方法和变量。修饰类时表示该类为静态类,可以不实例化直接访问其中的静态成员;修饰方法时表示该方法为静态方法,可以通过类名直接调用;修饰变量时表示该变量为静态变量,可以通过类名直接访问。
4. Java中的抽象类和接口有什么区别?
抽象类和接口都不能被实例化,它们的主要区别在于抽象类可以有实现的方法,而接口只能有抽象方法和常量。另外,一个类只能继承一个抽象类,但可以实现多个接口。
5. Java中的多态是什么?
多态是指同一类对象在不同情况下的不同表现形式。在Java中,多态可以通过继承和接口实现。通过继承,子类可以重写父类的方法,从而实现多态;通过接口,实现类可以实现接口中的方法,也可以通过不同的实现方式实现多态。
6. Java中的异常有哪些?
Java中的异常分为两种,一种是编译时异常,如IOException、SQLException等,必须在编译时处理;另一种是运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException等,可以不处理,在程序运行时抛出异常。
7. Java中的集合框架有哪些?
Java中的集合框架包括List、Set、Map等,它们都是接口,具体的实现类有ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等。
8. Java中的线程有哪些状态?
Java中的线程有五种状态,分别是新建状态、就绪状态、运行状态、阻塞状态和死亡状态。新建状态表示线程对象已经创建但还未启动;就绪状态表示线程已经准备好,等待CPU调度;运行状态表示线程正在执行;阻塞状态表示线程被阻塞,等待某些条件的触发;死亡状态表示线程已经执行完毕,结束运行。