8. (略)TreeSet集合中添加四五个Teacher对象, Teacher类中定义姓名和年龄属性。 1) 要求按照年龄升序排序,年龄相同时按照姓名字母顺序排序,并且将重复姓名的元素去掉---先比较年龄age(升序),年龄相同时再比较英文姓名name(升序)。 2) 先比较年龄age(升序),年龄相同时再比较英文姓名name(降序)。 3) 要求按照姓名字母长度升序排序,长度相同时再比较年龄age(升序)。 4) 先比较英文姓名name(降序),名称相同时再比较年龄age(升序)。 5) 先比较中文姓名name(降序),名称相同时再比较年龄age(降序)。
时间: 2024-02-24 09:58:41 浏览: 16
对于这些问题,我们可以通过实现Comparator接口来指定不同的排序方式。下面是对应的代码实现:
1. 按照年龄升序排序,年龄相同时按照姓名字母顺序排序,并且将重复姓名的元素去掉
```java
class TeacherComparator implements Comparator<Teacher> {
public int compare(Teacher t1, Teacher t2) {
if(t1.getAge() != t2.getAge()) {
return t1.getAge() - t2.getAge(); // 年龄升序
} else {
return t1.getName().compareTo(t2.getName()); // 姓名字母顺序升序
}
}
}
Set<Teacher> teachers = new TreeSet<>(new TeacherComparator());
// 添加四五个Teacher对象
// ...
System.out.println(teachers); // 输出排序后的元素
```
2. 先比较年龄age(升序),年龄相同时再比较英文姓名name(降序)
```java
class TeacherComparator implements Comparator<Teacher> {
public int compare(Teacher t1, Teacher t2) {
if(t1.getAge() != t2.getAge()) {
return t1.getAge() - t2.getAge(); // 年龄升序
} else {
return t2.getName().compareTo(t1.getName()); // 姓名字母顺序降序
}
}
}
Set<Teacher> teachers = new TreeSet<>(new TeacherComparator());
// 添加四五个Teacher对象
// ...
System.out.println(teachers); // 输出排序后的元素
```
3. 按照姓名字母长度升序排序,长度相同时再比较年龄age(升序)
```java
class TeacherComparator implements Comparator<Teacher> {
public int compare(Teacher t1, Teacher t2) {
if(t1.getName().length() != t2.getName().length()) {
return t1.getName().length() - t2.getName().length(); // 姓名长度升序
} else {
return t1.getAge() - t2.getAge(); // 年龄升序
}
}
}
Set<Teacher> teachers = new TreeSet<>(new TeacherComparator());
// 添加四五个Teacher对象
// ...
System.out.println(teachers); // 输出排序后的元素
```
4. 先比较英文姓名name(降序),名称相同时再比较年龄age(升序)
```java
class TeacherComparator implements Comparator<Teacher> {
public int compare(Teacher t1, Teacher t2) {
if(!t1.getName().equals(t2.getName())) {
return t2.getName().compareTo(t1.getName()); // 姓名字母顺序降序
} else {
return t1.getAge() - t2.getAge(); // 年龄升序
}
}
}
Set<Teacher> teachers = new TreeSet<>(new TeacherComparator());
// 添加四五个Teacher对象
// ...
System.out.println(teachers); // 输出排序后的元素
```
5. 先比较中文姓名name(降序),名称相同时再比较年龄age(降序)
```java
class TeacherComparator implements Comparator<Teacher> {
public int compare(Teacher t1, Teacher t2) {
if(!t1.getName().equals(t2.getName())) {
return t2.getName().compareTo(t1.getName()); // 姓名字母顺序降序
} else {
return t2.getAge() - t1.getAge(); // 年龄降序
}
}
}
Set<Teacher> teachers = new TreeSet<>(new TeacherComparator());
// 添加四五个Teacher对象
// ...
System.out.println(teachers); // 输出排序后的元素
```