Java 在数组列表中按标题显示所有DVD对象时遇到问题

Java 在数组列表中按标题显示所有DVD对象时遇到问题,java,arraylist,methods,Java,Arraylist,Methods,所以我需要制作一个显示方法,按类别显示数组列表中的所有DVD对象 这正是该方法应该做的: displayDVDsInCategory–此方法应具有一个类别作为参数。信息技术 应返回包含指定类别中所有DVD的arrayList对象。如果给定类别中没有DVD,arrayList的大小将为零 按类别显示DVD-用户应能够以特定的方式显示所有DVD 类别请用户输入DVD类别。如果收藏中没有DVD 匹配请求的类别,向用户显示一条消息,说明没有 所需类别中的DVD。否则,显示DVD标题列表-每个标题一个 行

所以我需要制作一个显示方法,按类别显示数组列表中的所有DVD对象

这正是该方法应该做的:

displayDVDsInCategory–此方法应具有一个类别作为参数。信息技术 应返回包含指定类别中所有DVD的arrayList对象。如果给定类别中没有DVD,arrayList的大小将为零

按类别显示DVD-用户应能够以特定的方式显示所有DVD 类别请用户输入DVD类别。如果收藏中没有DVD 匹配请求的类别,向用户显示一条消息,说明没有 所需类别中的DVD。否则,显示DVD标题列表-每个标题一个 行-用于指定类别的DVD。仅显示标题,而不是所有标题 信息

这是我目前的方法,它不能正常工作,我做错了什么

public DVD displayDVDsInCategory(String category) 
{
    for (int i=0;i<arraylist.size();i++)
    {
        if(category.equalsIgnoreCase(arraylist.get(i).getCategory())){
            return arraylist.get(i);
        }
    }
    return null;
}

从现在起,您只从函数返回一张
DVD
null
。假设您的代码已经编译得很好,这对您来说应该很好-

public List<DVD> displayDVDsInCategory(String category) {
    List<DVD> result = new ArrayList<>();
    for (int i = 0; i < arraylist.size(); i++) {
        if(category.equalsIgnoreCase(arraylist.get(i).getCategory())) {
           result.add(arraylist.get(i));
        }
    }
    return result;
}
公共列表显示类别(字符串类别){
列表结果=新建ArrayList();
对于(int i=0;i
您可以从问题中选择关键字,该问题告诉您的方法应如何显示为

displayDVDsInCategory–此方法应具有一个类别作为参数。它应该返回一个arrayList对象,其中包含指定类别中的所有DVD。如果给定类别中没有DVD,arrayList的大小将为零

因为它告诉您返回DVD对象的ArrayList,所以方法的返回值应该是ArrayList,而不是单个DVD对象:

public ArrayList<DVD> displayDVDsInCategory(String category)   //return DVD list
{
    ArrayList<DVD> newList = new ArrayList<DVD>();
    for (DVD dvd : arraylist)    //for each dvd in your current list
        if(category.equalsIgnoreCase(dvd.getCategory())){     //if category matches
            newList.add(dvd);                                 //add to new list
    return newList;                                           //return DVD list
}
public ArrayList displaysdvdsincegory(字符串类别)//返回DVD列表
{
ArrayList newList=新的ArrayList();
for(DVD:arraylist)//对于当前列表中的每个DVD
if(category.equalsIgnoreCase(dvd.getCategory()){//if类别匹配
添加(dvd);//添加到新列表
return newList;//返回DVD列表
}
您可以创建一个新的空列表。在检查当前DVD列表时,如果其中任何DVD与给定类别匹配,请将其添加到新列表中


最后,您返回的是新列表,而不是单个DVD对象。因此,如果没有DVD匹配,您仍然返回一个空的ArrayList。

我不确定是什么问题,但您的描述与代码不匹配。如果您要返回DVD列表,您的代码是错误的,它只返回类别与catego匹配的第一张DVD她以情妇身份去世

顺便说一句,如果您使用的是Java8,您可以对代码进行一些改进。请参阅下面的代码片段

public static List<String> displayDVDsInCategory(final String category) {
    return arraylist.stream()
         .filter(obj -> obj.equalsIgnoreCase(category))
         .collect(Collectors.toList());
}
公共静态列表显示DVDSIN类别(最终字符串类别){
返回arraylist.stream()
.filter(对象->对象相等信号情况(类别))
.collect(Collectors.toList());
}
public static List<String> displayDVDsInCategory(final String category) {
    return arraylist.stream()
         .filter(obj -> obj.equalsIgnoreCase(category))
         .collect(Collectors.toList());
}