用Java语言编写 HeadPhone类,包含 brand和 price 属性,该类实现 Comparable 接口规定该类对象大小,即手机按照价格来排序。创建一个只可以放 HeadPhonee 类的链表,链表当中添加3个 HeadPhone 对象,依次遍历每个对象,并在屏幕上输出排序前链表中的数据 ;调用 Collections 的 sort()方法将链表当中的对象按 price 值排序;并在屏幕上输出排序后链表中的数据;调用 Collections 的 binarySearch()方法,查找当前对象 price 的值是否和链表当中的某一个对象的 price 的值相同,若有,屏幕上输出对应的下标值
时间: 2024-03-25 22:35:45 浏览: 47
耳机标准接口定义
好的,我会解答您的问题。
以下是 Java 代码实现:
```java
import java.util.Collections;
import java.util.LinkedList;
public class HeadPhone implements Comparable<HeadPhone>{
private String brand;
private double price;
public HeadPhone(String brand, double price) {
this.brand = brand;
this.price = price;
}
public String getBrand() {
return brand;
}
public double getPrice() {
return price;
}
public void setBrand(String brand) {
this.brand = brand;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public int compareTo(HeadPhone o) {
return Double.compare(this.price, o.price);
}
public static void main(String[] args) {
LinkedList<HeadPhone> list = new LinkedList<>();
list.add(new HeadPhone("Sony", 200));
list.add(new HeadPhone("Bose", 300));
list.add(new HeadPhone("Sennheiser", 150));
System.out.println("排序前:");
for (HeadPhone hp : list) {
System.out.println(hp.getBrand() + " " + hp.getPrice());
}
Collections.sort(list);
System.out.println("排序后:");
for (HeadPhone hp : list) {
System.out.println(hp.getBrand() + " " + hp.getPrice());
}
HeadPhone target = new HeadPhone("Bose", 300);
int index = Collections.binarySearch(list, target);
if (index >= 0) {
System.out.println("找到了,下标为:" + index);
} else {
System.out.println("没找到");
}
}
}
```
输出结果为:
```
排序前:
Sony 200.0
Bose 300.0
Sennheiser 150.0
排序后:
Sennheiser 150.0
Sony 200.0
Bose 300.0
找到了,下标为:2
```
解释一下代码:
- 首先定义 HeadPhone 类,包含品牌和价格两个属性,实现 Comparable 接口的 compareTo() 方法,按价格大小比较对象。
- 在 main() 方法中,创建一个只能放 HeadPhone 类对象的链表,添加 3 个 HeadPhone 对象,并依次遍历每个对象,在屏幕上输出排序前链表中的数据。
- 调用 Collections 的 sort() 方法将链表中的对象按 price 值排序,并在屏幕上输出排序后链表中的数据。
- 创建一个 HeadPhone 对象 target,用于查找链表中是否存在价格为 300 的 HeadPhone 对象。
- 调用 Collections 的 binarySearch() 方法,在链表中查找 target 对象的下标值并输出。如果找到了,则输出下标值;如果没找到,则输出“没找到”。
阅读全文