jor*_*con -1 java foreach for-loop break
大家好,我被要求编写以下作业方法,我需要澄清一下。基本上我想知道作为参数给出的 Comparable 项目是否是可比较列表数组的一部分。假设数组已排序,我被告知如果可比较列表中有项目或者项目小于数组的下一个项目,我就停止检查数组。我使用了 break 但我不确定 break 是否会让我退出增强的 for 循环,以避免在任何条件为真时检查整个数组。我想确保数组中有 50,000 个项目并且我在位置 5 找到该项目以停止检查数组的其余部分。我以前从未使用过 break,所以我不确定它是否能让我摆脱 for 循环。
public boolean contains(Comparable item) {
Comparable[] comparableList= getStore();
boolean isThere = false;
for(Comparable p : comparableList)
{
if(item.compareTo(p)==0)
{
isThere = true;
break;
}
if(item.compareTo(p)<0)
{
break;
}
}
return isThere;
}
Run Code Online (Sandbox Code Playgroud)
在break将打破任何环路,包括增强的一个出来。您的解决方案将起作用。
但是,由于您在找到项目后立即返回,因此您可以将循环更改为在找到项目后立即返回,或者在您知道不会找到它时立即返回:
Comparable[] comparableList= getStore();
for(Comparable p : comparableList) {
if(item.compareTo(p)==0) {
return true;
}
if(item.compareTo(p)<0) {
return false;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)
此外,由于数组已排序,线性搜索不是您的最佳策略:实施二分搜索可以使您的算法显着更快。
| 归档时间: |
|
| 查看次数: |
6157 次 |
| 最近记录: |