gpt4 book ai didi

java - Hashset 和 Arraylist 性能

转载 作者:IT老高 更新时间:2023-10-28 20:52:38 28 4
gpt4 key购买 nike

我已经实现了一种方法,它简单地循环一组 CSV 文件,其中包含许多不同模块上的数据。然后将“moduleName”添加到 hashSet 中。 (代码如下)

我使用了 hashSet,因为它保证不会插入重复项,而不是 ArrayList,后者必须使用 contains() 方法并遍历列表以检查它是否已经存在。

我相信使用散列集比数组列表有更好的性能。我这样说对吗?

还有,谁能给我解释一下:

  1. 如果使用每个数据结构,如何发挥性能?
  2. 使用大 O 表示法的复杂度是多少?

    HashSet<String> modulesUploaded = new HashSet<String>();

    for (File f: marksheetFiles){
    try {
    csvFileReader = new CSVFileReader(f);
    csvReader = csvFileReader.readFile();
    csvReader.readHeaders();

    while(csvReader.readRecord()){
    String moduleName = csvReader.get("Module");

    if (!moduleName.isEmpty()){
    modulesUploaded.add(moduleName);
    }
    }

    } catch (IOException e) {
    e.printStackTrace();
    }

    csvReader.close();
    }
    return modulesUploaded;

    }

最佳答案

My experiment表明 HashSet 比从包含 3 个元素的集合开始的 ArrayList 更快。​​

完整的结果表

| Boost  |  Collection Size  |
| 2x | 3 elements |
| 3x | 10 elements |
| 6x | 50 elements |
| 12x | 200 elements | <= proportion 532-12 vs 10.000-200 elements
| 532x | 10.000 elements | <= shows linear lookup growth for the ArrayList

关于java - Hashset 和 Arraylist 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10196343/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com