ArrayList 实现,但 arrayList.size() 不会更新



我正在解决这个问题打印机队列,但我是使用 Java 的新手,我似乎无法让它工作。

我的逻辑是从 arrayList 中删除元素的基础,但即使在调用".trimToSize(("后,大小也不会更新,有什么问题?

import java.util.Scanner;
import java.util.ArrayList;
public class PrinterQueue {
    static boolean isBiggest(ArrayList<Integer> list, int index) {
        int max_index = 0;
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) > list.get(max_index)) {
                max_index = i;
            }
        }
        return max_index == index;
    }
    public static void main(String[] args) {
        Scanner sca = new Scanner(System.in);
        int number_of_int = sca.nextInt();
        for (int i = 0; i < number_of_int; i++) {
            int number_of_jobs = sca.nextInt();
            int my_job_index = sca.nextInt();
            ArrayList<Integer> list = new ArrayList<Integer>(number_of_jobs);
            for (int j = 0; j < number_of_jobs; j++) {
                list.add(sca.nextInt());
            }
            int minutes_to_complete = 0;
            while(list.size() > 0) {
                System.out.println("current size: " + list.size());
                int current = list.get(0);
                if (isBiggest(list, current) && my_job_index == 0) {
                    System.out.println("1: ");
                    minutes_to_complete++;      
                    list.remove(0);
                } else {
                    if (isBiggest(list, current)) { 
                        System.out.println("2: ");
                        list.remove(0); 
                        minutes_to_complete++;      
                    } else {
                        int cache = list.get(0);
                        list.remove(0);
                        list.add(cache);
                        my_job_index--;
                        System.out.println("my_job_index:" + my_job_index);
                    }
                }
                list.trimToSize();
            }
        }
    }
}

问题出在函数 isBiggest,我传递的是要比较的元素的值,而不是应有的索引。

最新更新