有10台笔记本电脑,每台都有型号和价格。编写一个Java应用程序,使用TreeMap<K,V>,按照价格从小到大排序输出所有电脑的信息,要求通过两种方式实现:通过实现Comparator接口和通过实现Comparable接口。
时间: 2024-12-15 21:29:07 浏览: 8
在Java中,你可以使用`TreeMap`数据结构,它内部已经默认实现了红黑树,可以保证元素的自然顺序或者自定义排序。为了按照价格从低到高排序并显示笔记本电脑信息,你可以通过以下两种方式来实现:
**方式一:使用Comparator接口**
首先,创建一个名为`Notebook`的类,包含型号和价格属性,并实现`Comparable<Notebook>`接口。然后,定义一个`ComputerPriceComparator`类作为自定义比较器,用于指定价格排序。
```java
import java.util.*;
class Notebook {
String model;
double price;
// 构造函数、getters和setters省略
@Override
public int compareTo(Notebook other) {
return Double.compare(this.price, other.price);
}
}
class ComputerPriceComparator implements Comparator<Notebook> {
@Override
public int compare(Notebook n1, Notebook n2) {
return Double.compare(n1.price, n2.price);
}
}
public class Main {
public static void main(String[] args) {
TreeMap<Notebook, Double> map = new TreeMap<>();
// 假设填充map的代码在这里,例如添加10台电脑的信息
// 使用Comparator
map.putAll(map.entrySet());
map.values().forEach(System.out::println);
}
}
```
**方式二:直接在`Notebook`类上实现Comparable接口**
在`Notebook`类上实现`Comparable<Notebook>`接口,然后在`compareTo`方法中处理价格比较。
```java
public class Main {
public static void main(String[] args) {
TreeMap<Notebook, Double> map = new TreeMap<>((n1, n2) -> n1.compareTo(n2));
// 填充map的代码
// 直接在TreeMap构造函数中使用自定义排序
map.forEach((model, price) -> System.out.println("Model: " + model + ", Price: " + price));
}
}
```
两种方式都可以达到按照价格排序的效果,第一种适用于需要复用排序逻辑的情况,而第二种则更简洁,因为排序已经内置于TreeMap的构造函数中了。
阅读全文