2016-08-05 86 views
1

Ich versuche, TreeSet mit einem vorhandenen HashSet mit Daten darin zu erstellen. Aber ich konnte keine überladene Methode finden, in der ich einen externen Komparator übergeben kann?Wie erstellt man TreeSet mit einem vorhandenen HashSet mit Daten?

Gibt es so einen externen Komparator während der Erstellung von TreeSet?

public static void main(String[] args) { 

     Set<Bus> m = new HashSet<>(); 
     Bus b1 = new Bus(1, "bhl", "udr"); 
     Bus b2 = new Bus(2, "ahmd", "mum");   
     m.add(b1); 
     m.add(b2); 
     //Below will create treeset using default comparable logic. 
     Set<Bus> treeObject = new TreeSet<>(m); 

     // There is no overloaded constructor like this. 
     Set<Bus> treeObject = new TreeSet<>(m, new BusComparator()); 

Wie kann ich das erreichen?

Antwort

1

Sie können es in zwei Schritten tun:

Set<Bus> treeObject = new TreeSet<>(new BusComparator()); 
treeObject.addAll(m); 
+1

Das ist schließlich, was der andere Konstruktor tut, wenn man sich den Quellcode aussehen: 'public TreeSet (Sammlung c) {diese(); addAll (c); } ' – Andreas