比较Java中一个类的两个实例
我有一个有两个整数成员的类。这些成员是块编号和偏移编号。我需要比较这门课的两个例子,它们的符号是大的还是小的。比如,比较Java中一个类的两个实例,java,Java,我有一个有两个整数成员的类。这些成员是块编号和偏移编号。我需要比较这门课的两个例子,它们的符号是大的还是小的。比如, instance1 < instance2 instance1
instance1 < instance2
instance1
语句需要返回true,如果
instance1.blockNumber < instance2.blockNumber;
instance1.blockNumber
或
instance1.blockNumber=instance2.blockNumber;
instance1.offset
据我所知,Java不支持运算符重载。如何进行这种比较?如果类类型是您自己的代码,那么您可以让它实现
compariable
,并定义comparieto
方法,在该方法中您可以编写逻辑。然后,您可以使用compareTo
比较它们,让类实现Comparable
接口,该接口提供了compareTo
方法。然后,您可以在if语句中使用数字的值(-1
表示较少,1
表示较多,0
表示相等)
如果要将这些对象放入列表(例如,用于排序),还应@覆盖.equals
方法
import java.util.Comparable;
public class BlockOffset implements Comparable<BlockOffset>
{
private int blockNumber;
private int offset;
@Override
public int compareTo(BlockOffset instance2) {
if (this.blockNumber < instance2.blockNumber) return -1;
if (this.blockNumber > instance2.blockNumber) return 1;
if (this.offset < instance2.offset) return -1;
if (this.offset > instance2.offset) return 1;
return 0;
}
}
import java.util.compariable;
公共类BlockOffset实现可比较
{
私有整数块号;
私有整数偏移;
@凌驾
公共整数比较(块偏移量实例2){
if(this.blockNumberinstance2.blockNumber)返回1;
if(this.offsetinstance2.offset)返回1;
返回0;
}
}
您可以实现并使用comparable
或comparator
您可以实现comparable
界面。你仍然不能写instance1
,但需要写instance1.compareTo(instance2)<0
。我能用>,
,你必须使用compareTo()
。
import java.util.Comparable;
public class BlockOffset implements Comparable<BlockOffset>
{
private int blockNumber;
private int offset;
@Override
public int compareTo(BlockOffset instance2) {
if (this.blockNumber < instance2.blockNumber) return -1;
if (this.blockNumber > instance2.blockNumber) return 1;
if (this.offset < instance2.offset) return -1;
if (this.offset > instance2.offset) return 1;
return 0;
}
}