簡體   English   中英

如何從對象的ArrayList中的String實例變量獲取String數組?

[英]How to get String array from String instance variable in ArrayList of object?

我有以下類Employee

Class Employee {
    private String firstname;
    private String lastname;
    private int Salary;
    /* getters and setters */
}

我為這個類構建了一個ArrayList並向它添加了一些Employee ,如下所示:

ArrayList<Employee> employees = new ArrayList<Employee>();
for (int x=1; x<=10; x++){
    Employee Newemp = new Employee();
    Newemp.setFirstname("firstname"+ i);
    Newemp.setLastname( "lastname"+ i);
    Newemp.setSalary( i * 1000);
    employees.add(Newemp); 
}

如何從Employee ArrayList動態獲取所有Employee的名字作為String數組?
我要問的是這樣的:

String employeesFirstname = employees.firstname;

我可以將其作為String數組獲取嗎? 還是我必須手動構建它?

這不是關於如何訪問 ArryList 中的值,而是關於如何獲取特定屬性的所有值,例如 ArrayList 中的 firstname,作為 android 中使用 java 7 的 String 數組類型

首先,您的代碼不會將任何Employee添加到您的 list 您首先實例化列表,然后創建少量Employee實例,但由於它們未添加到列表中,因此在循環后將無法再訪問它們。

將它們顯式添加到列表中:

ArrayList<Employee> employees = new ArrayList<Employee>();
for (int x=1; x<=10; x++){
    Employee e = new Employee();
    e.setFirstname("firstname"+ i);
    e.setLastname( "lastname"+ i);
    e.setSalary( i * 1000);
    employees.add(e);
}

現在,您可以通過遍歷列表來訪問列表中Employee的屬性:

for(Employee e : employees) {
    // called once per Employee in the list
    System.out.println(e.getFirstName());
}

作為側節點,從一開始就盡量避免使用像e這樣的單字符標識符 現在您可能很明顯, e代表“員工”,但在半年之后就不一定了,甚至更糟的是,對於另一個開發人員來說。 這個問題在更大的代碼庫中變得更糟。

我會在這里使用流 API。 像Employees.stream().map(Employees::getFirstname) .toArray() 應該做的事情。

您可以使用 Lambda 表達式的強大功能......

例子:

public static void main(String[] args) {
    List<Employee> abc = new ArrayList<>();
    abc.add(new Employee());
    abc.add(new Employee());
    abc.add(new Employee());
    List<String> lastNamesList = abc.stream().map(Employee::getLastName)
        .collect(Collectors.toCollection(ArrayList::new));
        System.out.println(resultJava8);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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