Ich arbeite gerade an einer Klasse, die eine Methode "add" enthält, die mein spezifisches Objekt zu meiner ArrayList hinzufügt, einem Feld, das in meinem Konstruktor instanziiert ist. Der Zweck besteht darin, das Objekt offensichtlich der ArrayList hinzuzufügen, aber gleichzeitig fügt es das Objekt zu der Position hinzu, an der die ArrayList ständig sortiert wird. Die Objekte werden durch einen String verglichen, der von einer Zugriffsmethode innerhalb der Klasse getCompany() empfangen wird. Ich habe Probleme zu verstehen, wie ich das machen würde. Mein experimenteller Code folgt:Sortierung einer ArrayList, während Objekte in sie eingefügt werden
public class WeeklyOrders {
private List<DistributionOrder> orders;
public WeeklyOrders(){
orders= new ArrayList<DistributionOrder>();
}
public void add(DistributionOrder dOrder){
int maxPos=0;
int minDiff=0;
for(int i=0;i<orders.size();i++){
String comp=orders.get(i).getCompany();
int diff=comp.compareTo(dOrder.getCompany());
if(diff<minDiff){
minDiff=diff;
maxPos=i;
}
}
orders.add(maxPos,dOrder);
}
public String toString(){
String s="";
for(int i=0;i<orders.size();i++){
s=s+orders.get(i).getCompany()+"\t";
}
return s;
}
}
und ...........? –
Wenn die Liste immer sortiert ist, glaube ich nicht, dass Sie diese 'if (diff
Ich würde nur am Ende hinzufügen und tun Sie entweder 'orders.sort (Comparator.comparing (DistributionOrder :: getCompany)) 'oder der entsprechende Aufruf' Collections.sort() '. Erfinde das Rad nicht neu. –