IDEA中怎么设置项目更改后的分析延迟时间,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置项目更改后的分析延迟时间,这样就可确保项目范围分析的正确性,具体的操作步骤如下。......
2023-07-04 619 JAVA
java对象比较的实现模式,如何实现java对象比较
如果说现在有两个数字要判断是否相等,可以使用“==”完成,如果是字符串
判断是否相等使用"equals()",但是如果说现在有一个自定义的类,要想判断它
的两个对象是否相等,那么必须要实现类对象之中所有属性内容的比较。
对象=数据集合,那么进行比较一定要一次比较所有的属性。
package com.gwolf;
class Book {
private String title;
private double price;
public Book(String title, double price) {
super();
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
public class TestDemo {
public static void main(String[] args) {
Book book = new Book("java开发", 79);
Book book2 = new Book("java开发", 79);
if(book.getTitle().equals(book2.getTitle())&&book.getPrice()==book2.getPrice()) {
System.out.println("同一个对象");
}else {
System.out.println("不是同一个对象");
}
}
}
此时一个最基础的对象比较的功能实现了,以上按照要求进行了对象中属性内容的比较。但是以上的程序里面会存在有问题:主方法(main())就是一个客户端,客户端的程序逻辑越简单越好,最好隐藏所有的细节逻辑。
如果要想进行信息比较,那么所有的具体比较细节必须由每个对象自己完成。对象所在的类一定要提供有对象比较的方法。
那么现在的问题出现了,该如何去定义这个方法呢?假如说这个方法名称暂时定义为compare()。
package com.gwolf;
class Book {
private String title;
private double price;
public Book(String title, double price) {
this.title = title;
this.price = price;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public boolean compare(Book book) {
if(book.getTitle().equals(this.getTitle())&&
book.getPrice()==this.getPrice()) {
return true;
}else {
return false;
}
}
}
public class TestDemo {
public static void main(String[] args) {
Book book = new Book("java开发", 79);
Book book2 = new Book("java开发", 79);
if(book.compare(book2)) {
System.out.println("同一个对象");
}else {
System.out.println("不是同一个对象");
}
}
}
现在我们查看程序的执行结果:
对象比较的操作代码形式都是固定的,都会按照固定的步骤进行同一对象的验证比较。
Comparable接口的主要特征是在类定义的时候就默认实现好的接口,那么如果说现在有一个类已经开发完善了。
但是由于初期的设计并没有安排此类对象的比较。而后又突然需要实现对象数组的排序,那么这个时候再不修改Book类定义情况下是不可能使用Comparable接口的,为此java里面为了解决这样的问题,又出现了另外一个比较器:java.util.Comparator。
我们需要单独准备一个类来实现Comparator接口,这个类将作为指定类的排序类。
class BookComparator implements ComparatorBook> {
public int compare(Book o1, Book o2) {
if(o1.getPrice() > o2.getPrice()) {
return 1;
}else if(o1.getPrice() o2.getPrice()) {
return -1;
}else {
return 0;
}
}
}
之前使用Comparable接口的时候利用的是Arrays中的sort()方法,可是现在更换了一个接口之后,那么现在可以使用另外一个被重载的sort()方法:
public static T> void sort(T[] a, Comparator? super T> c);
public class TestDemo {
public static void main(String[] args) {
Book book = new Book("java开发", 79);
Book book2 = new Book("java开发", 79);
Book books[] = new Book[]{book,book2};
Arrays.sort(books,new BookComparator());
System.out.println(Arrays.toString(books));
}
}
以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!
标签: JAVA
相关文章
IDEA中怎么设置项目更改后的分析延迟时间,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置项目更改后的分析延迟时间,这样就可确保项目范围分析的正确性,具体的操作步骤如下。......
2023-07-04 619 JAVA
IDEA中怎么设置调试器最近表达式的最大数量,IDEA是java编程语言的集成开发环境,使用该软件编写代码时,可以设置调试器最近表达式的最大数量,从而有效避免调试器中表达式存储过多。......
2023-07-04 440 JAVA