Sortierung JList Mit Sammlungen der Sort-Methode
Möchte ich Sortiere meine Liste der user in einem IRC-channellist, das gespeichert ist, als eine JList, mit Sammlungen Methode Sortieren. Der Code unten führt dies, zu einem gewissen Grad:
users
ist die JList, die die Benutzer enthält.
userList
ist der Vermittler Datenstruktur (LinkedList), die für die Sortierung verwendet die Liste mit Collections.
//Iterate through the JList and add the users to a LinkedList of strings.
for(Object userName : users.toArray())
userList.add(userName.toString());
//Sort
Collections.sort(userList);
//Clear the user list (removes all users).
users.clear();
//Put the sorted userList in users again.
while(iterator.hasNext() && i < userList.size())
users.addElement(userList(get(i++));
Das problem ist, dass ein IRC-channelList hat drei Benutzergruppen: OPs, äußerten die Nutzer und regelmäßige Nutzer, und Sie brauchen, um in einer Hierarchie organisiert. Natürlich, die Methode "sort" nicht in Erwägung gezogen. Auch der sort-Methode unterscheidet zwischen klein-und Großbuchstaben, und dies ist unerwünscht.
Fragen zusammengefasst:
Zu behandeln, wie die Sortierung der verschiedenen Benutzer-Gruppen; kann ich geben Sie es mit den Sammlungen die Sortierung irgendwie so, dass es entspricht der Hierarchie?
So beenden Sie die Sortierung aus, die Differenzierung zwischen klein-und Großbuchstaben?
Meine Lösungsvorschläge:
- (Ineffizient!) Erstellen Sie drei Listen, und fügen Sie die entsprechenden Benutzergruppen zu Ihnen, zu Sortieren, und dann fügen Sie Sie auf eine Liste, in der bequem bestellen.
- konvertieren Benutzernamen in Kleinbuchstaben (schade).
Irgendwelche Vorschläge? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein code-snippet für eine benutzerdefinierte Komparator -
Der Zusammentragmaschine verwendet die groß-und Kleinschreibung Sortieren entsprechend der gegebenen/aktuelle Gebietsschema, das kann (wie f ist.ich. Deutsch) oder kann nicht ignorieren (wie f ist.ich. UNS, wenn ich mich richtig erinnere) Fall. Wenn Sie Sie ignorieren wollen immer, ändern Sie einfach die compareString zu verwenden o1.compareToIgnoreCase(o2)
FYI, JXList von SwingX-Projekt unterstützt die Sortierung von Standard (gleiche Mechanismus wie JTable), keine Akrobatik nötig, einfach den Komparator zu verwenden