2016-03-02 80 views
1

我有一個課程表中,我在這個班我分析的輸入文件有排序我對象的ArrayList問題

ArrayList<Processes> processes = new ArrayList<Process>(); 

,得到3個值,並創建一個對象數組。

Process object = new Process(processName, arrival, burst);  
processes.add(object); 

我的目標是按「到達」時間對數組列表進行排序。那麼我可以將這些項目添加到鏈接列表隊列中。我在分類時遇到了很大的困難,我試圖比較無濟於事。我有一個Process類,我有我的getName,getArrival,getBurst方法。以及:

Comparator<Process> p = new Comparator<Process>(){ 

     public int compare(Process p1, Process p2){ 
      return(p1.getArrival() - p2.getArrival()); 

     } 
    }; 

IMAGE1

for(int i = 0; i<30; i++ ){ 
    if(arrival == i) 
     System.out.println("Time " + i + ": " + "P"+ id + " " + description); 
    if(selected = i) 
     System.out.println("Time " + i + ": " + "P"+ id + " " + description); 
    if(finished = i) 
     System.out.println("Time " + i + ": " + "P"+ id + " " + description); 


} 
+0

你在哪裏打電話排序?也不要使用'a-b'來更好地使用'Long.compare(Long)'方法。 – SMA

+0

所以你正在嘗試使用'Collections.sort()'進行排序? – Kartic

+0

@Kartic是的,我打算使用Collections.sort(processes,object.p)。我在調度類中緊接在processes.add(object) – dre

回答

0

我假設你Process類是一樣的東西:

class Process implements Comparable<Process> { 

    private String processName; 
    private Date arrival; 

    public Process(String processName, Date arrival) { 
     this.processName = processName; 
     this.arrival = arrival; 
    } 

    public String getProcessName() { 
     return processName; 
    } 
    public Date getArrival() { 
     return arrival; 
    } 

    @Override 
    public int compareTo(Process p) { 
     return this.getArrival().compareTo(p.getArrival()); 
    } 
} 

現在,如果你嘗試類似下面,它應該工作。如果沒有,請讓我們知道確切的問題。

Process p1 = new Process("P1", new Date(11111111113L)); 
Process p2 = new Process("P2", new Date(11111111111L)); 
Process p3 = new Process("P3", new Date(11111111112L)); 

ArrayList<Process> processes = new ArrayList<Process>(); 
processes.add(p1); 
processes.add(p2); 
processes.add(p3); 

Collections.sort(processes); 

[更新]

要轉換的ArrayList成隊列,你可以嘗試:

Queue<Process> queue = new LinkedList<Process>(processes); 
+0

非常感謝你。有用。現在可以請你幫助我,把這個「進程」隊列形式的隊列 =新LinkedList 請 – dre

+0

看到我的更新 – Kartic

+0

作品像一個魅力。謝謝兄弟 – dre

0

實現可比接口到進程。

public class Process implements Comparable<Process> { 
Process(processName, arrival, burst) 
{constructor} 

It implements the method 

@Override 
public int compareTo(Process p1,Process p2) { 
    //write code here for compare name 
    }} 

在主:

ArrayList<Processes> processes = new ArrayList<Process>(); 

//Add objects 

processes.add(object); 

Collections.sort(Processes);