我想将文件中的行读入Set或List。这样做有标准实用程序吗?
如果这些行的形式为[key] = [value],我可以这样做:
Properties properties = new Properties();
properties.load(new FileInputStream(file));
值为单个条目,每行一个,每个值成为Set / List
中的条目我知道可以使用LineReader,InputStreams和大量的样板来完成,但我希望避免这种情况。
答案 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不支持泛型,因此这段代码片段会发出编译警告。