插入性能:在开始时使用HashSet与在开始处使用ArrayList,并在末尾使用哈希集删除重复项

时间:2018-11-22 11:29:50

标签: java

哪个应该更快?我需要快速插入元素,并删除重复项。

代码示例:

List catNames = new ArrayList();
for(Cat cat: cats){
catNames.add(nameTheCat(cat));
}
new HashSet(catNames); // remove duplicates finally 

vs

HashSet catNames = new HashSet();
for(Cat cat: cats){
catNames.add(nameTheCat(cat));
}

1 个答案:

答案 0 :(得分:1)

如果重复很多,第一个代码段(首先创建List可能会很浪费(在内存和时间上),因为稍后将要消除重复。

因此,使用第二个片段并将元素直接添加到Set更为有意义。

编辑:更改问题后,您可以使用Stream s来缩短代码:

Set<String> catNames = cats.map(cat->nameTheCat(cat)).collect(Collectors.toSet());