2009-07-07 9 views
4

Ich möchte Zeilen aus einer Datei in ein Set oder eine Liste lesen. Gibt es dafür ein Standard-Utility?Gibt es ein Äquivalent von java.util.Properties für Sets?

Wenn diese Zeilen der Form sind [key] = [Wert] ich tun kann:

Properties properties = new Properties(); 
properties.load(new FileInputStream(file)); 

Werte sind Einzel Einträge vorhanden sind, eine pro Zeile, wird jeder Wert ein Eintrag in der Set/Liste

Ich weiß, dass es mit LineReader, InputStreams und viel BoilerPlate gemacht werden kann, aber ich versuche, dies zu vermeiden.

Antwort

3

ja, die Properties Klasse selbst Accessormethoden für convertions bietet:

public Set < Map.Entry> entrySet()

Gibt eine KeySet Blick auf die in dieser Karte enthaltenen Abbildungen. Das Set wird durch die Map unterstützt, sodass Änderungen an der Map in der Menge widergespiegelt werden und umgekehrt. Wenn die Zuordnung geändert wird, während eine Iteration über die Menge ausgeführt wird (außer durch die eigene Entfernungsoperation des Iterators oder durch die Operation setValue für einen vom Iterator zurückgegebenen Zuordnungseintrag), sind die Ergebnisse der Iteration nicht definiert. Der Satz unterstützt das Entfernen von Elementen, wodurch das entsprechende Mapping über die Operationen Iterator.remove, Set.remove, removeAll, retainAll und clear gelöscht wird. Die Operationen add oder addAll werden nicht unterstützt.

public Set < K> keySet()

Gibt einen KeySet Blick auf den in dieser Karte enthaltenen Schlüssel. Das Set wird durch die Map unterstützt, sodass Änderungen an der Map in der Menge widergespiegelt werden und umgekehrt. Wenn die Zuordnung geändert wird, während eine Iteration über die Menge ausgeführt wird (außer durch die eigene Entfernungsoperation des Iterators), sind die Ergebnisse der Iteration nicht definiert. Der Satz unterstützt das Entfernen von Elementen, wodurch das entsprechende Mapping über die Operationen Iterator.remove, Set.remove, removeAll, retainAll und clear gelöscht wird. Die Operationen add oder addAll werden nicht unterstützt.

in Alternative können Sie die Eigenschaft mit Elemente Aufzählen()

+0

Dank Ich nahm an, dass es fehlschlagen würde, weil der Wert null wäre, scheint es, dass es die Eingabe der Schlüssel mit einem Suffix "=" macht. Ein Kommentar zu Ihrer Antwort, es sieht so aus, als ob die Generika als HTML interpretiert werden. –

+0

behoben, danke :) – dfa

+0

edit zu meinem Kommentar oben, der Wert ist die leere Zeichenfolge, so dass der Eintrag toString() wird zu [key] = "" –

0

Wenn Sie von Standard-Dienstprogramm Sie 3rd-Party-Bibliothek bedeuten, dann ist meine Antwort: fast!

Die Apache Commons ist es wert, ein Teil von fast jeder Java-Anwendung zu sein. Mit IOUtils von dem Apache Commons, können Sie erreichen, was Sie, indem Sie diese beschreiben:

final List list = IOUtils.readLines(new FileInputStream(file)); 
    Set<String> set = new HashSet<String>(list); 

Das Set jede Zeile aus der Datei enthalten wird.

Hinweis: IOUtils ist nicht generics-aware, daher gibt dieses Codefragment eine Kompilierungswarnung.

+0

Nicht sicher, warum dies wurde downvoted, scheint eine vernünftige Antwort für mich. Der Vorteil dieses Ansatzes besteht darin, dass ein Set nicht von einer Map unterstützt wird.Der Nachteil ist, dass Kommentare in der Datei nicht ignoriert werden. Sie müssen also selbst mit ihnen umgehen oder sicherstellen, dass es keine gibt. –

Verwandte Themen