簡體   English   中英

如何在自定義 Object 中循環通過 ArrayList?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM