小编mon*_*lof的帖子

有没有更快的方法从对象集合中提取唯一值?

我有一个方法从作为员工信息的对象集合中提取值:

public class Employee
{
    public String AREA;
    public String EMPLOYEE_ID;
    public String EMPLOYEE_NAME;
}
Run Code Online (Sandbox Code Playgroud)

我想获得我所做的所有不同区域我认为更容易,只需检查ArrayList是否包含值,如果不是添加它,则需要187ms才能完成,:

    long startTime = System.currentTimeMillis();
    ArrayList<String> distinct_areas = new ArrayList<String>();
    for (int i = 0; i < this.employeeTress.length; i++)
    {
        if (!distinct_areas.contains(this.employeeTress[i].AREA))
            distinct_areas.add(this.employeeTress[i].AREA);
    }
    String[] unique = new String[distinct_areas.size()];
    distinct_areas.toArray(unique);
    long endTime = System.currentTimeMillis();
    System.out.println("Total execution time: " + (endTime - startTime) + "ms");
Run Code Online (Sandbox Code Playgroud)

然后我想以不同的方式做它,看它是否变得更快,排序数组然后只检查最后一项如果它不同然后添加它,它更快一点,它需要121ms才能完成:

    startTime = System.currentTimeMillis();
    String[] vs = new String[this.employeeTress.length];
    for (int i = 0; i < this.employeeTress.length; i++)
    {
        vs[i] = …
Run Code Online (Sandbox Code Playgroud)

java collections

3
推荐指数
1
解决办法
7211
查看次数

标签 统计

collections ×1

java ×1