2016-04-12 4 views
0

aus irgendeinem Grund bin ich in einer Situation, wo ich brauche eine Property-Datei verwenden wie:Sortierung Keyset von java.util.property

1=1 
2=2 
3=3 
4=4 
5=5 
6=6 
7=7 
12=12 
13=13 
14=14 
15=15 
16=16 
17=17 
23=23 
24=24 
25=25 
26=26 
27=27 
34=34 
35=35 
36=36 
37=37 
45=45 
46=46 
47=47 
56=56 
57=57 
67=67 
123=123 
124=124 
125=125 
126=126 
................. 
24567=24567 
34567=34567 
123456=123456 
123457=123457 
123467=123467 
123567=123567 
124567=124567 
134567=134567 
234567=234567 
1234567=1234567 

Und ich habe Klasse Utility-Handler die Schlüssel zu sortieren

public class PropertyHandler { 

    private static PropertyHandler instance; 
    private Properties properties; 

    private PropertyHandler() { 
     InputStream fos = null; 
     try { 
      fos = PropertyHandler.class.getClassLoader().getResourceAsStream("dow-pattern.properties"); 
      properties = new Properties() { 
       @Override 
       public Set<Object> keySet() { 
        return Collections.unmodifiableSet(new TreeSet<Object>(super.keySet())); 
       } 

       @Override 
       public synchronized Enumeration<Object> keys() { 
        return Collections.enumeration(new TreeSet<Object>(super.keySet())); 
       } 
      }; 
      properties.load(fos); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    private static PropertyHandler getInstance() { 
     if (instance == null) { 
      instance = new PropertyHandler(); 
     } 
     return instance; 
    } 

    private Properties getProperties() { 
     return properties; 
    } 

    public static String getStringProperty(String propertyName) { 
     return PropertyHandler.getInstance().getProperties().getProperty(propertyName); 
    } 

    public static int getIntProperty(String propertyName) { 
     return Integer.parseInt(PropertyHandler.getInstance().getProperties().getProperty(propertyName)); 
    } 

    public static Set<Object> getAllKeys() { 
     return PropertyHandler.getInstance().getProperties().keySet(); 
} 
} 

Aber wenn ich die Schlüssel, durch Aufrufen von "getAllKeys()" die Reihenfolge der Schlüssel als nicht erwartet. Es wird auf zufällige Weise gedruckt.

1 
12 
123 
1234 
12345 
123456 
1234567 
123457 
12346 
123467 
12347 
1235 
12356 
123567 
12357 
1236 
........ 

Alle Hinweise zur Lösung dieses Problems wären hilfreich.

+1

Sieht für mich nicht zufällig aus ... Sieht sortiert aus – 3kings

+1

Wenn Sie eine wertorientierte Sortierung wünschen, müssen Sie alle Schlüssel in 'Integer' konvertieren. –

Antwort

5

Das ist nicht zufällig, das ist alphabetisch sortiert. Sie müssen die Werte numerisch sortieren. Der einfachste Weg wäre, die Strings in Ganzzahlen zu konvertieren, bevor Sie sie zum TreeSet hinzufügen.