我是Java的新手,所以请接受我的道歉。我有一个有序的数组列表,即{ 10, 10, 10, 10, 120, 120 }
。
如何遍历列表以检查int 10
是否位于列表顶部,int 120
位于底部列表?
我尝试使用
for(int i=0; i<list.size(); i++){
for(int j=0; j<list.size(); j++){
}
}
但这就是我能达到/理解的程度。
答案 0 :(得分:2)
首先,您使用两个嵌套for循环。在您的情况下,这不是必需的,使用单个for循环就足够了。 此外,我建议您不要将测试重点放在特定值上。尝试以更高层次的方式思考。 在这种情况下,您应该测试列表中的每个项目都大于前一个项目。所以你应该从第二个元素(索引1)开始,然后遍历整个数组,将每个项目与前一个项目进行比较。
for (int i = 1; i < list.size(); i++) {
if (list.get(i) < list.get(i - 1)) {
System.out.println("list not properly ordered");
return;
}
}
System.out.println("list correctly ordered");
return;
答案 1 :(得分:0)
好吧,如果你想检查列表是否已排序,你可以比较相邻的元素,看看列表总是保持不变或增加 - 中间的东西,如
if (list.get(i) > list.get(i + 1)) {
return false;
}
答案 2 :(得分:0)
以下是answer by @sirnino的替代方法,使用增强型for
循环。
优势在于即使在基于数组的列表(例如LinkedList
)上也能表现良好,因为它使用的是Iterator
,而不是get(index)
。
int prev = Integer.MIN_VALUE;
for (int value : list) {
if (prev > value) {
System.out.println("list not properly ordered");
return;
}
prev = value;
}
System.out.println("list correctly ordered");
return;