检查某些项目位于底部,在arraylist中

时间:2017-10-20 21:04:53

标签: java arraylist

我是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++){

  }
}

但这就是我能达到/理解的程度。

3 个答案:

答案 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;