[英]How to search the ArrayList for a Employee name (searched only for last name )
如果给你一个数据文件,其中包含员工的名字和姓氏,以及他们的薪水,如何创建该数据的数组列表? 此外,如何创建一个方法来搜索 ArrayList 中的员工姓名(用户输入的姓氏)以及另一种方法来搜索 ArrayList 中的所有员工每周收入超过用户输入的金额?
我想您以某种特定格式获取文件,例如 csv。 如果你不这样做,那基本上是不可能的。 您需要任何东西来分离数据。
我会创建一个包含名字、姓氏和薪水的 class。 如果名字对您来说根本不重要,您也可以将其存储在 HashMap 中,这将使搜索变得容易,但如果某个姓氏出现两次,您会遇到问题,因为其中一个会被覆盖。
搜索姓氏:使用 foreach 循环遍历列表并将姓氏与搜索字符串进行比较。 如果它匹配 -> 做任何你需要的,例如 System.out.printLine。
搜索薪水:用foreach循环遍历列表,检查当前object的薪水是否>=您的参考薪水。 如果需要,然后将其打印或添加到另一个数组
如果你想在 Java 8 中使用 filter() function,你也可以检查这个,但它会在这个过程中创建一个 stream。 https://mkyong.com/java8/java-8-streams-filter-examples/
您使用的方法基本上取决于文件的大小。 如果您在谈论文件中的许多记录,那么有更好的方法
假设文件如下所示:
First Last Salary
----- ---- -----
John Doe 78
Brad Snow 98
Bill Rosnow 101
我会制作某种数据结构来保存每一行数据,例如 Employee class object
public class Employee {
private String First;
private String Last;
private double salary;
// constructor, setters, getters down below
}
然后您将读取每一行数据并将内容存储到 object 中,并将其添加到您的 ArrayList
ArrayList<Employee> dataArray = new ArrayList<Employee>();
// pseudo code here
while(Not End of File) {
// Parse file line contents and separate into local variables
Employee dataLine = new Employee(firstNameFromFile, LastNameFromFile, salaryFromFile);
dataArray.add(dataLine);
}
这就是我将文件中的数据存储到 ArrayList 的方式。 现在要搜索您的数组,这取决于您希望算法的效率。 您可以通过遍历数组列表中的每个 object 来进行简单的线性搜索,即 O(n)。 可以通过以下 for 循环来做到这一点:
for(Employee employee : dataArray) {
if(employee.getLastName() == searchingName) return employee;
}
现在可以为指定的薪水做同样的事情,但是您可以将找到的 Employee 对象存储到另一个 ArrayList 中; 这样你就可以拥有工资高于指定金额的所有员工:
ArrayList<Employee> employeesFound = new ArrayList<Employee>();
for(Employee employee : dataArray) { // Don't forget that dataArray holds all the Employee objects
if(employee.getSalary() > userSpecifiedSalary) employeesFound.add(employee);
}
return employeesFound;
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.