- 利用TreeMap排序功能实现需求简述:
- TreeMap是基于红黑树实现的,它会根据键的自然顺序(如果键实现了Comparable接口)或者根据创建TreeMap时提供的Comparator进行排序。
- 在这个电商项目中,商品价格作为键,要按价格升序存储,商品对象作为值。可以让商品类实现Comparable接口,重写compareTo方法,以价格为比较依据;或者创建TreeMap时传入一个自定义的Comparator,在其compare方法中按价格比较。这样插入到TreeMap中的商品就会按价格升序排列,方便后续查找价格区间内的商品。
- 关键Java代码片段:
class Product implements Comparable<Product> {
private double price;
// 其他商品属性和构造方法省略
public double getPrice() {
return price;
}
@Override
public int compareTo(Product other) {
return Double.compare(this.price, other.price);
}
}
TreeMap<Product, String> productTreeMap = new TreeMap<>();
// 插入商品
Product product1 = new Product(10.0);
Product product2 = new Product(20.0);
productTreeMap.put(product1, "Product 1 description");
productTreeMap.put(product2, "Product 2 description");
class Product {
private double price;
// 其他商品属性和构造方法省略
public double getPrice() {
return price;
}
}
Comparator<Product> priceComparator = (p1, p2) -> Double.compare(p1.getPrice(), p2.getPrice());
TreeMap<Product, String> productTreeMap = new TreeMap<>(priceComparator);
// 插入商品
Product product1 = new Product(10.0);
Product product2 = new Product(20.0);
productTreeMap.put(product1, "Product 1 description");
productTreeMap.put(product2, "Product 2 description");