我有两个关于Java中的数组的问题,希望你能抽出时间来帮助我.
问题1:
int[] intArray1 = { 1, 4, 2, 5, 6, 7, 2 };
int[] intArray2 = { 1, 4, 2, 5, 6, 7, 2 };
intArray1.equals(intArray2);
Run Code Online (Sandbox Code Playgroud)
但它返回错误?
问题2:
我运行这段代码:
int[] intArray1 = { 1, 4, 2, 5, 6, 7, 2 }; //2 is duplicated
Arrays.binarySearch(intArray1,2);
Run Code Online (Sandbox Code Playgroud)
它返回-2.
但是当我删除重复时:
int[] intArray3 = { 1, 4, 2, 5, 6, 7}; // nothing is duplicated
Arrays.binarySearch(intArray1,2);
Run Code Online (Sandbox Code Playgroud)
现在它返回2,这是正确的.
我不知道数组中的二进制搜索如何处理导致-2的重复?
关于问题1:数组继承了equals()from 的默认实现,仅当两个对象相同时才Object返回true.您可以使用以下方法测试数组内容是否相等:
Arrays.equals(intArray1, intArray2);
Run Code Online (Sandbox Code Playgroud)
关于问题2:除非对数组进行排序,否则二进制搜索会返回不可预测(通常是错误的)结果.它碰巧在特定的未排序数组上工作是巧合.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |