比较两个键之间的差异不使用 CompareTo java
Comparing the difference between two keys Not using CompareTo java
除了使用仅 returns 值为 -1、0 和 1 的 compareTo 之外,因此不能用于这种情况,
有没有办法比较键之间的差异?
示例Key A = 5 Key B = 7 and Key C = 10
(为了简单起见,我在示例中使用了数字,我在运行测试代码时不知道键是数字还是字符串。)
C - B = 3
C - A = 5
C键和B键的差异较小,因此B键更接近C
Java 库中是否有用于此的方法? (我检查了很多)还是我们自己?我们可以减去键之间的差异吗?
你可以这样做
public static void main(String[] args) {
MyClass a=new MyClass(5);
MyClass b =new MyClass(7);
MyClass c =new MyClass(10);
MyClass result=c.closerTo(a,b);
}
interface Closer<T> {
T closerTo(T t1,T t2);
}
class MyClass implements Closer<MyClass>{
private Integer num;
public MyClass(Integer n) {
num=n;
}
@Override
public MyClass closerTo(MyClass t1, MyClass t2) {
Integer diff1=num-t1.num;
Integer diff2=num-t2.num;
return diff1<diff2?t1:t2;
}
}
除了使用仅 returns 值为 -1、0 和 1 的 compareTo 之外,因此不能用于这种情况,
有没有办法比较键之间的差异?
示例Key A = 5 Key B = 7 and Key C = 10
(为了简单起见,我在示例中使用了数字,我在运行测试代码时不知道键是数字还是字符串。)
C - B = 3
C - A = 5
C键和B键的差异较小,因此B键更接近C
Java 库中是否有用于此的方法? (我检查了很多)还是我们自己?我们可以减去键之间的差异吗?
你可以这样做
public static void main(String[] args) {
MyClass a=new MyClass(5);
MyClass b =new MyClass(7);
MyClass c =new MyClass(10);
MyClass result=c.closerTo(a,b);
}
interface Closer<T> {
T closerTo(T t1,T t2);
}
class MyClass implements Closer<MyClass>{
private Integer num;
public MyClass(Integer n) {
num=n;
}
@Override
public MyClass closerTo(MyClass t1, MyClass t2) {
Integer diff1=num-t1.num;
Integer diff2=num-t2.num;
return diff1<diff2?t1:t2;
}
}