0

我的 Arraylist 包含 9 个人。每个人都有一个 String 类型的 name 值、一个 int 类型的 age 值和一个 Enum 类型的值(TV、SMARTPHONE、CAR)。我必须创建实现一个根据产品名称查找名称的方法。如果 arrayListName 包含 SMARTPHONE,则返回所有带有智能手机的名称。

public void showByProduct(Product SMARTPHONE) {



    public void showByProductName(Product SMARTPHONE) {

            if (arrayListName.contains(SMARTPHONE))

                System.out.println("found"+nameofowner);
            else {
                System.out.println("not found");
            }
        }
4

2 回答 2

2

您需要遍历您的List, 并为每个 Person 检查它的product字段是否具有您在方法中传递的值。

此外,您需要在方法中再添加一个List本地方法,在其中添加与Person匹配的Product Name,然后在最后返回List

public List<Person> showByProductName(Product product) {

    List<Person> localList = new ArrayList<Person>();

    for (Person person: persons) {   // persons is the original List.
        if (person.getProduct() == product) {
            localList.add(person);
        }
    }

    return localList;
}

以及调用此方法的地方,将返回值存储在List引用中:-

List<Person> result = showByProductName(Product.SMARTPHONE);
System.out.println(result);

请注意,您可以enum使用 比较两个值==。作为一个enum是一个singleton

PS: -不要将您的参数名称设置为SMARTPHONE. 这是一个枚举值。并且还根据Java Naming Convention,变量名称应以小写字母开头,并紧随camelCasing其后。

于 2013-01-18T16:00:06.553 回答
0
for (Person p : arrayListName){
    if(p.geProduct()==product)
        System.out.println("Found : " + p.name());
}

然而,这并不是很酷。我认为你应该用枚举对你的人进行排序。

于 2013-01-18T16:08:46.937 回答