2012-06-13 11 views
6

Ich habe den Code abgespeckte ein Beispiel zu reproduzieren, die den Fehler wirft:java TreeSet werfen Illegal: Schlüssel außer Reichweite

public class Test { 
    public static void main(String[] args) { 
    NavigableSet<String> set = new TreeSet<String>(
      Arrays.asList("a", "b", "c", "d")); 
    NavigableSet<String> set2 = new TreeSet<String>(); 
    set2 = set.tailSet("c", false); 
    set2.addAll(set.headSet("b", true)); 
    System.out.println(set2); 
    } 
} 

Ziel des Codes ist eine Art Rollover zu implementieren, wenn Teilmengen abrufen des Satzes. Z.B. im obigen Fall möchte ich alle Elemente von c [exklusiv] bis b [inklusive]. Ich habe festgestellt, dass der Rest des Codes gut funktioniert, wenn ich die tailSet() - oder headSet() - Zeilen auskommentiere. Allerdings, wenn ich beide Linien haben, bekomme ich

java.lang.IllegalArgumentException: key out of range

+0

Vielleicht könnten Sie darauf iterieren und tun es manuell? – sp00m

+1

+1 für eine gute [SSCCE] (http://sscce.org/) – adarshr

Antwort

7

versuchen, etwas wie folgt aus:

public static void main(String[] args) { 
     NavigableSet<String> set = new TreeSet<String>(
       Arrays.asList("a", "b", "c", "d")); 
     NavigableSet<String> set2 = new TreeSet<String>(); 
     set2.addAll(set.tailSet("c", false)); 
     set2.addAll(set.headSet("b", true)); 
     System.out.println(set2); 
    } 

Wenn Sie das tun

set2 = set.tailSet("c", false); 

Sie tatsächlich den Verweis auf die neue TreeSet verlieren, dass Sie erstellt und erhalten die , die set.tailSet zurückgibt.

+0

+1 für "verlieren Sie den Verweis auf die neue TreeSet ... Holen Sie sich die SortedSet, die set.tailSet zurückgibt". Ich bin mir nicht sicher, wie ich das vermisst habe. Ich habe einige Tests durchgeführt, um zu bestätigen, dass der Fehler auftritt, weil ich Strings, die <= "b" sind, zu einer Teilmenge hinzufügen soll, die nur Strings> "c" enthalten sollte. Gespeicherte Zeile mit NavigableSet set2 = new TreeSet (set.tailSet ("c", false)); Vielen Dank! – Kes115

+0

Gern geschehen! – tibtof