Java 无法对Arraylist进行排序
正在尝试将输出打印为: 第一个最大值 第一分钟 第二最大值 第二分钟 第三个最大值。。。等等 这是我的代码:Java 无法对Arraylist进行排序,java,arraylist,collections,Java,Arraylist,Collections,正在尝试将输出打印为: 第一个最大值 第一分钟 第二最大值 第二分钟 第三个最大值。。。等等 这是我的代码: import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; public class Arraylist1 { p
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class Arraylist1 {
public static void main(String args[]){
List <Integer>list= new ArrayList <Integer> ( );
list.add(20);
list.add(30);
list.add(70);
list.add(50);
list.add(60);
list.add(40);
for(int i=0;i<list.size();i++) {
if(i%2==0){
Object num=Collections.max(list);
System.out.println(num);
list.remove(num);
}
else if(i%2!=0)
{
Object num1=Collections.min(list);
System.out.println(num1);
list.remove(num1);
}
}
}
}
70
20
60
您的问题是循环会一直迭代,直到达到
list.size()
但一方面,你不断地缩小尺寸;但另一方面,你继续重新计算循环条件
您必须将该大小指定给类似initialSize的辅助变量,并与该固定值进行比较 for(int i=0;i对于每个list.remove(),列表的大小都会减小。因此循环只运行3次。您可以改用while循环
for(int i=0;i<list.size();i++)
public static void main(String args[]){
List<Integer>list= new ArrayList <Integer> ();
list.add(20);
list.add(30);
list.add(70);
list.add(50);
list.add(60);
list.add(40);
int i =0;
while(!list.isEmpty()) {
if(i%2==0){
Object num=Collections.max(list);
System.out.println(num);
list.remove(num);
}
else if(i%2!=0) {
Object num1=Collections.min(list);
System.out.println(num1);
list.remove(num1);
}
i++;
}
}
publicstaticvoidmain(字符串参数[]){
Listlist=newarraylist();
增加(20);
增加(30);
增加(70);
增加(50);
增加(60);
增加(40);
int i=0;
而(!list.isEmpty()){
如果(i%2==0){
Object num=Collections.max(列表);
系统输出打印项数(num);
列表。删除(num);
}
如果(i%2!=0)为else{
对象num1=Collections.min(列表);
系统输出打印项次(num1);
列表。删除(num1);
}
i++;
}
}
在for循环中,对于一个迭代,它只执行max()或min()案例。我想我能帮上忙。下次提示:请花些时间正确格式化/缩进所有输入。如前所述:请不要忘记接受其中一个答案。请求帮助,接受帮助,然后不回头继续,这真的是不礼貌的,是吗?很高兴听到这一点。所以不要忘记以后接受:-)对于(inti=0;i>list.size();i++),如果以这种方式迭代,会出现什么问题。虽然它适用于3个元素扫描,但请您帮助我使用比较器接口编写相同的代码?您现在得到了三个答案,说明了如何解决此问题。但是如果你有其他问题,那么再问另一个问题。不要在评论中这样做。最后:重复计算最小值/最大值是非常低效的。您只需对列表进行一次排序,然后在last/first/second到last/second之间打印元素。。。改为索引。你能帮我使用comparator接口编写相同的代码吗?@Swati,你在原来的问题上得到了很多帮助,但你仍然没有“接受”一个答案,让人们知道问题已经解决。你甚至懒得承认我提供的帮助/解释,所以我想我将跳过下一个问题。无论如何,每个主题都有一个问题,所以所有的建议都与原来的主题相关,否则发帖会让人很困惑,试图理解所有建议的含义。另外,我不知道你们现在在问什么。我对stackover flow是个新手。所以我不知道如何接受答案。在这方面你能帮我吗@camickr@Swati,您单击答案旁边的“复选标记”,这对解决问题最有帮助。我注意到你下一个问题很容易就解决了。你为什么还没有接受这个问题的答案?
int max = list.size();
for(int i = 0; i < max; i++)
public static void main(String args[]){
List<Integer>list= new ArrayList <Integer> ();
list.add(20);
list.add(30);
list.add(70);
list.add(50);
list.add(60);
list.add(40);
int i =0;
while(!list.isEmpty()) {
if(i%2==0){
Object num=Collections.max(list);
System.out.println(num);
list.remove(num);
}
else if(i%2!=0) {
Object num1=Collections.min(list);
System.out.println(num1);
list.remove(num1);
}
i++;
}
}