是否有相应的java.util.Properties用于集合?

时间:2009-07-07 10:06:18

标签: java collections file-io

我想将文件中的行读入Set或List。这样做有标准实用程序吗?

如果这些行的形式为[key] = [value],我可以这样做:

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

值为单个条目,每行一个,每个值成为Set / List

中的条目

我知道可以使用LineReader,InputStreams和大量的样板来完成,但我希望避免这种情况。

2 个答案:

答案 0 :(得分:3)

是的,Properties类本身为转换提供了访问器方法:

public Set< Map.Entry>的entrySet()

返回此映射中包含的映射的KeySet视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。如果在对集合进行迭代时修改了映射(除非通过迭代器自己的remove操作,或者通过迭代器返回的映射条目上的setValue操作),迭代的结果是未定义的。该集支持元素删除,它通过Iterator.remove,Set.remove,removeAll,retainAll和clear操作从地图中删除相应的映射。它不支持add或addAll操作。

公开集< K>的keySet()

返回此映射中包含的键的KeySet视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove操作),迭代的结果是未定义的。该集支持元素删除,它通过Iterator.remove,Set.remove,removeAll,retainAll和clear操作从地图中删除相应的映射。它不支持add或addAll操作。

在替代方案中,您可以使用 elements()

枚举属性

答案 1 :(得分:0)

如果,通过标准实用程序,您指的是第三方库,那么我的答案是:几乎!

Apache Commons值得成为几乎所有Java应用程序的一部分。使用Apache Commons中的IOUtils,您可以通过以下方式实现您所描述的内容:

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

该集将包含文件中的每一行。

注意:IOUtils不支持泛型,因此这段代码片段会发出编译警告。