java中如何从对象列表中查找按数据变量

java中如何从对象列表中查找按数据变量,java,data-structures,collections,time-complexity,Java,Data Structures,Collections,Time Complexity,最近,我在一次面试过程中进行了一次技术讨论。 他在下面问我 Class Employee { int empId; String empName; String salary; } 现在我在Arraylist中存储了1000个(可能会很高)employee对象。 就时间复杂度而言,我可以从这个列表中按empName搜索的最佳方式是什么 是否有人可以建议最好的方法…?您可以将元素存储在a中,该文件由员工名称索引,并且该值包含员工对象 这将为ID查找提供O(1)(平均大小写)查找

最近,我在一次面试过程中进行了一次技术讨论。 他在下面问我

Class Employee
{
   int empId;
   String empName;
   String salary;
}
现在我在Arraylist中存储了1000个(可能会很高)employee对象。 就时间复杂度而言,我可以从这个列表中按empName搜索的最佳方式是什么


是否有人可以建议最好的方法…?

您可以将元素存储在a中,该文件由员工名称索引,并且该值包含员工对象

这将为ID查找提供
O(1)
(平均大小写)查找


另一种选择是,如果您希望继续使用
ArrayList
来存储对象,则将其按
empName
进行排序(使用自定义比较器),然后使用在
O(logn)
中查找相关项。您可以将元素存储在a中,a由员工姓名索引,并且该值包含Employee对象

这将为ID查找提供
O(1)
(平均大小写)查找

如果您希望继续使用
ArrayList
存储对象,另一个选项是按
empName
对其排序(使用自定义比较器),然后使用
employees.stream().filter(e->“name.equals”(e.getEmpName()).collect(collector.toList())在
O(logn)
中查找相关项;
使用流api和过滤器java 8

employees.stream().filter(e->“name”.equals(e.getEmpName()).collect(Collectors.toList());

使用stream api和filter java 8

我提出了这个答案,但后来他改变了问题,说现在我想通过empId搜索,你会为它创建新的映射实现吗。。?在那之后,我建议如果是这样的话,我们将对它进行分类,然后我们将循环它并进行搜索,以避免任何需要遍历的进一步记录。。。但是他说,好吧,让我们继续吧……如果你想开始查找对象中的所有或许多字段,你正在查找类似于DS的SQL,请阅读更多关于我建议的这个答案的信息,但是他改变了问题,说现在我想通过empId搜索,你会为它创建新的映射实现吗。。?在那之后,我建议如果是这样的话,我们将对它进行分类,然后我们将循环它并进行搜索,以避免任何需要遍历的进一步记录。。。但他说,好吧,让我们继续吧……如果您想开始查找对象中的所有或许多字段,您正在查找类似于DS的SQL,请阅读更多关于