返回Arraylist为空的方法

时间:2018-06-19 17:08:00

标签: java arraylist empty-list

我目前需要方法返回的列表的副本,因此我在for-each中使用它。 类员工扩展用户。我希望仅与员工一起返回列表,这是User的实例,但我认为它不起作用。

public ArrayList<Employee> getEmployeeList() {
        ArrayList<Employee> copy = new ArrayList<>();
        for(User user : ec.getUsersList().getUserList()){
            if(user instanceof Employee){
                copy.add((Employee) user);
            }
        }
        return copy;
    }

我想在这里使用它,for似乎不在运行列表。

for (Employee a : c.getEmployeeList()) {
            if (!dispEmployee.contains(a)) {
                notSelectedEmployee.addElement(a.toString());
            }
        }

2 个答案:

答案 0 :(得分:0)

您的代码看起来不错。检查string a = "den"; a += 'e'; a += 'r'; 的内容,此列表是否包含任何元素? 您也可以用Java 8样式重写您的方法。看起来更简单,更短

ec.getUsersList().getUserList()

答案 1 :(得分:0)

我是Java 8,lambda和更实用的样式的忠实拥护者。我可能会这样写:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Filter {

    public static List<Employee> getEmployeeList(List<User> users) {
        List<Employee> employees = new ArrayList<>();
        if (users != null) {
            employees = users.stream()
                    .filter(u -> u instanceof Employee)
                    .map(u -> (Employee) u)
                    .collect(Collectors.toList());
        }
        return employees;
    }
}

我的JUnit测试通过了;我觉得很好用户和员工只是对您所追求的目标的简单猜测。

import org.junit.Assert;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class FilterTest {

    @Test
    public void testFilter() {
        // setup
        List<User> users = new ArrayList<>();
        users.add(new User("foo", "bar"));
        users.add(new Employee("baz", "bat", "supervisor"));
        users.add(new User("x", "y"));
        users.add(new Employee("alpha", "omega", "developer"));
        List<Employee> expected = new ArrayList<>();
        expected.add((Employee) users.get(1));
        expected.add((Employee) users.get(3));
        // exercise
        List<Employee> actual = Filter.getEmployeeList(users);
        // assert
        Assert.assertEquals(expected, actual);
    }
}