2017-03-19 3 views
-3

Ich habe diese ArrayList 'sortList' genannt. Ich füge Objekte hinzu. Die Objekte sind vom Typ 'MailItem'. Ich möchte meine ArrayList nach dem getPriorityLevel() des Objekts sortieren. Wie kann ich das machen?Wie werden Objekte, die sich in einem Arraylist befinden, auf der Grundlage ihrer Eigenschaften sortiert?

Weitere Informationen: getPriorityLevel() gibt einen String zurück.

Dies ist, was ich bisher getan habe:

Schnittstelle
package strategies; 

import java.util.ArrayList; 

import automail.IMailSorter; 
import automail.MailItem; 
import automail.StorageTube; 

public class MailSorter implements IMailSorter{ 

    MailItem item; 

    private ArrayList<MailItem> sortList =new ArrayList<MailItem>(); 

    public void addToList(MailItem item) 
    { 
     if (item.getPriorityLevel()=="High") 
     { 

      MailItem highPriorityItem= new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime()); 

      sortList.add(highPriorityItem); 

     } 

     if (item.getPriorityLevel()=="Medium") 
     { 

      MailItem mediumPriorityItem=new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime()); 

      sortList.add(mediumPriorityItem); 
     } 

     if (item.getPriorityLevel()=="Low") 
     { 
      MailItem lowPriorityItem=new MailItem(item.getDestFloor(), item.getSize(), item.getPriorityLevel(), item.getArrivalTime()); 

      sortList.add(lowPriorityItem); 
     } 


    } 

    @Override 
    public boolean fillStorageTube(StorageTube tube) { 
     // TODO Auto-generated method stub 
     return false; 
    }} 
+3

Mögliches Duplikat von [Wie kann ich Zeichenfolgen in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Guy

+0

* "Wie kann ich tun das, dh sortiere meine ArrayList nach dem getPriorityLevel() des Objekts (des Elements)? "* Durch Aufruf von' sort() 'mit einem benutzerdefinierten' Comparator'. – Andreas

+3

Sie tun das * exakt gleiche Ding * in den 3 'if' Anweisungen in' addToList() ', also was ist der Sinn der' if' Anweisungen? – Andreas

Antwort

0

Hier ist eine kurze Demonstration einer Verwendung eines Komperators. es als eine sehr vereinfachte Demo Treat, und nicht ein robuster Produktionscode:

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 

public class MailSorter{ 

    MailItem item; 

    private ArrayList<MailItem> sortList =new ArrayList<>(); 

    void addToList(MailItem item) { sortList.add(item);} 

    ArrayList<MailItem> getSortedList(){ 
     Collections.sort(sortList, new MailComperator()); 
     return sortList; 
    } 

    public class MailComperator implements Comparator<MailItem> { 

     @Override 
     public int compare(MailItem o1, MailItem o2) { 
      return o1.getPriorityLevel().compareTo(o2.getPriorityLevel()); 
     } 
    } 

    public static void main(String args[]) { 

     MailSorter ms = new MailSorter(); 

     ms.addToList(new MailItem("Low")); 
     ms.addToList(new MailItem("Medium")); 
     ms.addToList(new MailItem("Low")); 
     ms.addToList(new MailItem("High")); 
     ms.addToList(new MailItem("Medium")); 
     ms.addToList(new MailItem("Low")); 
     ms.addToList(new MailItem("High")); 

     ms.getSortedList().stream().forEach(e -> System.out.println(e.getPriorityLevel())); 
    } 
} 

class MailItem { 

    private String priorityLevel; 

    MailItem(String priorityLevel){ 
     this.priorityLevel = priorityLevel; //you may want to check ! null 
    } 

    String getPriorityLevel() { return priorityLevel;} 
} 

Hinweis der Code eine MCVE Version des entsandten Code ist. Ich glaube, das trägt zu qualitativ hochwertigeren Fragen und Antworten bei.

Verwandte Themen