怎么重写重写compareTo方法实现按照price的大小来确定两个手机对象的大小关系
时间: 2024-03-10 12:46:26 浏览: 80
要重写compareTo方法,需要让该类实现Comparable接口,并在类中重写compareTo方法。以下是一个示例代码,其中假设有一个名为Phone的类,其中包含price属性。
```
public class Phone implements Comparable<Phone> {
private double price;
// 构造函数等其他成员变量和方法省略
@Override
public int compareTo(Phone otherPhone) {
if (this.price < otherPhone.price) {
return -1;
} else if (this.price > otherPhone.price) {
return 1;
} else {
return 0;
}
}
}
```
在compareTo方法中,我们比较了两个Phone对象的price属性,如果当前对象的price小于otherPhone对象的price,则返回-1,如果当前对象的price大于otherPhone对象的price,则返回1,如果当前对象的price等于otherPhone对象的price,则返回0。这样,我们就能够根据price属性的大小来确定两个Phone对象的大小关系。
相关问题
编写手机类(MobilePhone),含有type(型号,String类型)、price(价格,int类型)属性,要求该类实现Comparable接口,重写compareTo方法,实现按照price的大小来确定两个手机对象的大小关系。 在链表中添加三个手机对象(从键盘输入),通过Collections类的sort方法对链表中的对象按照price升序排序。输入第四个手机对象的信息,并查找它的price是否与链表中某个对象的price相同。
好的,我可以为您编写这个MobilePhone类和实现类。
MobilePhone类:
```java
public class MobilePhone implements Comparable<MobilePhone>{
private String type;
private int price;
public MobilePhone(String type, int price) {
this.type = type;
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public int compareTo(MobilePhone other) {
return this.price - other.getPrice();
}
}
```
实现类:
```java
import java.util.*;
public class MobilePhoneTest {
public static void main(String[] args) {
List<MobilePhone> phoneList = new LinkedList<>();
Scanner scanner = new Scanner(System.in);
for(int i = 0; i < 3; i++) {
System.out.println("请输入手机型号:");
String type = scanner.nextLine();
System.out.println("请输入手机价格:");
int price = scanner.nextInt();
scanner.nextLine(); // 消耗掉输入的回车符
MobilePhone phone = new MobilePhone(type, price);
phoneList.add(phone);
}
Collections.sort(phoneList);
for(MobilePhone phone : phoneList) {
System.out.println("手机型号:" + phone.getType() + ",价格:" + phone.getPrice());
}
System.out.println("请输入第四个手机型号:");
String type = scanner.nextLine();
System.out.println("请输入第四个手机价格:");
int price = scanner.nextInt();
boolean found = false;
for(MobilePhone phone : phoneList) {
if(phone.getPrice() == price) {
found = true;
System.out.println("第四个手机价格与链表中手机价格相同");
break;
}
}
if(!found) {
System.out.println("第四个手机价格与链表中手机价格不同");
}
}
}
```
希望这个例子可以帮助您理解如何实现一个实现了Comparable接口的MobilePhone类,以及如何使用Collections类对链表中的MobilePhone对象按照price升序排序,并查找特定的MobilePhone对象的price是否与链表中某个对象的price相同。
7-4 手机按价格排序、查找 分数 20 作者 吴光生 单位 新余学院 编写手机类(MobilePhone),含有type(型号,String类型)、price(价格,int类型)属性,要求该类实现Comparable接口,重写compareTo方法,实现按照price的大小来确定两个手机对象的大小关系。 在链表中添加三个手机对象(从键盘输入),通过Collections类的sort方法对链表中的对象按照price升序排序。输入第四个手机对象的信息,并查找它的price是否与链表中某个对象的price相
符,如果相符则输出该手机对象的型号和价格,否则输出“未找到该手机”。以下是实现该功能的代码:
```java
import java.util.*;
public class MobilePhone implements Comparable<MobilePhone> {
private String type;
private int price;
public MobilePhone(String type, int price) {
this.type = type;
this.price = price;
}
public String getType() {
return type;
}
public int getPrice() {
return price;
}
@Override
public int compareTo(MobilePhone other) {
return Integer.compare(this.price, other.price);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<MobilePhone> phones = new LinkedList<>();
for (int i = 0; i < 3; i++) {
System.out.print("请输入手机型号:");
String type = scanner.nextLine();
System.out.print("请输入手机价格:");
int price = scanner.nextInt();
scanner.nextLine();
phones.add(new MobilePhone(type, price));
}
System.out.print("请输入第四个手机型号:");
String type = scanner.nextLine();
System.out.print("请输入第四个手机价格:");
int price = scanner.nextInt();
scanner.nextLine();
MobilePhone phone4 = new MobilePhone(type, price);
Collections.sort(phones);
int index = Collections.binarySearch(phones, phone4);
if (index >= 0) {
MobilePhone phone = phones.get(index);
System.out.println("找到了手机,型号为:" + phone.getType() + ",价格为:" + phone.getPrice());
} else {
System.out.println("未找到该手机");
}
}
}
```
运行程序,输入三个手机的信息,然后输入第四个手机的信息,程序会输出该手机的价格是否与链表中某个对象的价格相符。
阅读全文