[英]How to loop through an ArrayList within a custom Object?
我意識到之前已經問過這個問題的變體,但是我很難弄清楚如何完成以下任務:
我有一個看起來像這樣的 object(請注意,“技能”和“認證”是ENUMS ):
Public Employee {
String name;
List<Skill> employableSkills = new ArrayList<>();
List<Certification> certifications = new ArrayList<>();
...
}
在另一個 class 中,我有一個
List<Employee> listOfEmployees;
我試圖像這樣循環遍歷它:
// determine the total number of employees who know Java
int numberOfEmployeesWhoKnowJava = 0;
for (Employee employee : listOfEmployees) {
if (employee.employableSkills.contains( ?? )) {
numberOfEmployeesWhoKnowJava++;
}
我正在努力獲得 if 語句的確切語法。 我試過這個:
if(employee.employableSkills.contains(Employee.EmployableSkills.JAVA)) {
但此字符串中的 EmployableSkills 得到“無法解析符號”。
我應該如何遍歷每個員工 object 的列表並檢查它是否包含 JAVA?
編輯:事實證明我犯了一個根本性錯誤。 在 OOP 中,最好不要將一個 class 的數據暴露給另一個 class。 相反,我在 Employee class 中編寫了 getter,然后從我的其他 class 中調用這些 getter。 這樣,Employee 中的數據就不會直接暴露給需要它的 class。
即使你的語法正確,下面的代碼也會有很差的 n - O(n) 復雜度。
if(employee.employableSkills.contains(Employee.EmployableSkills.JAVA)) {
將您的列表更改為 hash 實現集
Set<Skill> employableSkills = new HashSet<>();
現在遍歷員工
int numberOfEmployeesWhoKnowJava = 0;
for (Employee employee : listOfEmployees) {
if (employee.employableSkills.contains(Skill.JAVA)) {
numberOfEmployeesWhoKnowJava++;
}
}
這將在查看技能時給出 O(1) 的復雜度
你的問題有點不清楚,但如果我的解釋是正確的,試試這個:
if (employee.employableSkills.contains(Skill.JAVA))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.