我是Java的新手,所以请接受我的道歉。我有一个有序的数组列表,即{ 10, 10, 10, 10, 120, 120 }
。检查某些项目是在底部,在arraylist
我怎么能循环通过列表检查INT 10
放置在名列榜首的和int 120
放置在底部列表的?
我尝试使用
for(int i=0; i<list.size(); i++){
for(int j=0; j<list.size(); j++){
}
}
但这是多远我能得到/理解。
我是Java的新手,所以请接受我的道歉。我有一个有序的数组列表,即{ 10, 10, 10, 10, 120, 120 }
。检查某些项目是在底部,在arraylist
我怎么能循环通过列表检查INT 10
放置在名列榜首的和int 120
放置在底部列表的?
我尝试使用
for(int i=0; i<list.size(); i++){
for(int j=0; j<list.size(); j++){
}
}
但这是多远我能得到/理解。
好吧,如果你想检查列表进行排序,你可以相邻的元素比较,看看列表中始终保持相同或增加 - 这是在中间像
if (list.get(i) > list.get(i + 1)) {
return false;
}
首先, ,你正在使用两个嵌套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),用于访问基于数组的列表,如题。但是,对于非数组列表,例如'LinkedList',它将表现不佳。为了在所有类型的列表上获得良好的性能,应该使用'Iterator',例如。使用增强的for循环,如[本答案](https://stackoverflow.com/a/46857633/5221149)所示。 – Andreas
这里是将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;
你说你有一个**有序**,即**排序**数组。现在你想检查数组是否正确排序**。那当然是,它已经被排序了。或者你想检查一个** unknown **数组是否被排序? – Zabuza
此外,for循环看起来像是在迭代2D ArrayList,但是描述只描述一维ArrayList – Taelsin
[如何确定List是否在Java中排序?](https:// stackoverflow .com/questions/3047051/how-to-determine-if-a-list-is-sorted-in-java) – Zabuza