Set
维护唯一记录并在现有元素试图重复时更新现有记录。Java Set - 哪个更快Set.add()或Set.addAll()?
考虑以下两种情况。你认为哪个更快,更有效率呢?
方案1:使用的addAll()
Set<String> uniqueSet = new HashSet<String>();
uniqueSet = getSomedata(param1);
uniqueSet.addAll(getSomedata(param2));
这里getSomedata()
只是返回的数据的收集,在该方法中没有特别的逻辑。
方案2:使用加()
Set<String> uniqueSet = new HashSet<String>();
getSomedata(param1, uniqueSet);
getSomedata(param2, uniqueSet);
这里getSomedata()
是如下
void getSomedata(String param, Set<String> uniqueSet){
while (someCollection.hasNext()){
uniqueSet.add(someCollection.get());
}
}
查看实现,它位于JDK附带的src.zip中。如果你正确地设置你的IDE,你应该可以在那里看到它。 – the8472
首先,第一个片段不应该创建一个无用的空HashSet。其次,你应该争取的不是表现。这两者之间的差异可能是微不足道的。你应该努力的是可读性和可维护性。我期望一个名为getSomedata()的方法返回一些数据。不要拿Set作为参数,填充它,不返回任何内容。如果你想将数据添加到List而不是Set,那会怎么样?或者如果你只是想迭代它呢?第一个更自然,更容易理解和使用。 –
@JBNizet,实际上在我的应用程序中,我正在从服务器上暴露的文件中读取大量数据。文件内的行是唯一的,但可以复制到多个文件中。从所有文件收集数据后,我只需要处理唯一的记录。如你所知,List不会强制唯一性。因此,我正在使用Set。 –