import java.util.*;
class A implements Comparable
{
int i,j;
public A(int a1,int a2)
{
i=a1;
j=a2;
}
public int compareTo(Object obj)
{
int k=((A)obj).i;
if(k>i)
return -1;
else if(k==i)
return 0;
else
return 1;
}
public String toString()
{
return "("+i+","+j+")";
}
}
public class M
{
public static void main(String[] args)
{
A[] a={new A(5,2),new A(2,3),new A(3,1)};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int loc;
A obj1=new A(2,3);
loc=Arrays.binarySearch(a,obj1);
System.out.print(loc);
}
}上面是用来查找数组中是否存在一个对象的。
为什么A(3,1) A(3,2)都会显示 loc>0呢 按书上说应该是后者loc<0那要怎么样才能在数组中查找一个A对象是否存在呢
class A implements Comparable
{
int i,j;
public A(int a1,int a2)
{
i=a1;
j=a2;
}
public int compareTo(Object obj)
{
int k=((A)obj).i;
if(k>i)
return -1;
else if(k==i)
return 0;
else
return 1;
}
public String toString()
{
return "("+i+","+j+")";
}
}
public class M
{
public static void main(String[] args)
{
A[] a={new A(5,2),new A(2,3),new A(3,1)};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
int loc;
A obj1=new A(2,3);
loc=Arrays.binarySearch(a,obj1);
System.out.print(loc);
}
}上面是用来查找数组中是否存在一个对象的。
为什么A(3,1) A(3,2)都会显示 loc>0呢 按书上说应该是后者loc<0那要怎么样才能在数组中查找一个A对象是否存在呢
解决方案 »
- java中YUV420转换为RGB525怎么修改呢?
- Java小问题一个 帮忙解释一下
- netbean 中调用dll怎么用
- JAVA的基础问题,编译通过后,有中间字节代码文件#.class.可是用JAVA运行时,没有结果.这是为什么?
- 请教下关于热键的问题
- 用什么方法可以知道在本计算机上某个端口已经被站用了?
- 非常紧急重要的问题!!!使用<%@page import="java.util.*"%>出现错误
- jasperreports是如何控制多个报表批量打印
- 此错误是怎么回事???
- 我安装了JBuilder5,为什么安装后双击图标,不启动程序,大家有没有遇到过!
- 接口中方法的使用问题
- java字符串转码的问题
public static int binarySearch(Object[] a, int fromIndex, int toIndex,
Object key) {
rangeCheck(a.length, fromIndex, toIndex);
return binarySearch0(a, fromIndex, toIndex, key);
} // Like public version, but without range checks.
private static int binarySearch0(Object[] a, int fromIndex, int toIndex,
Object key) {
int low = fromIndex;
int high = toIndex - 1; while (low <= high) {
int mid = (low + high) >>> 1;
Comparable midVal = (Comparable)a[mid];
int cmp = midVal.compareTo(key); if (cmp < 0)
low = mid + 1;
else if (cmp > 0)
high = mid - 1;
else
return mid; // key found
}
return -(low + 1); // key not found.
}