Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法对Arraylist进行排序_Java_Arraylist_Collections - Fatal编程技术网

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++;
    }
}