【问题标题】:Search element in arraylist在arraylist中搜索元素
【发布时间】:2014-10-12 00:49:46
【问题描述】:

如何在 arraylist 中搜索元素并显示它?示例是用户想要搜索代码 A25 然后它将打印他仅搜索的数组列表上的全部内容,输出为 A25 CS 212 Data Structures 3。

 Subject CS212 = new Subject("A25","\t\tCS 212","\t\tData Structures\t\t\t\t",units);
    Subject IT312 = new Subject("A26","\t\tIT 312","\t\tData Base Management System 2\t\t",units);
    Subject IT313 = new Subject("A27","\t\tIT 312","\t\tData Base Management System 2\t\t",units);
    Subject CS313 = new Subject("A29","\t\tCS 313","\t\tDigital Designt\t\t\t\t",units);
    Subject Disc  = new Subject("A30","\t\tIT 212","\t\tDiscrete Structurest\t\t",units);
    Subject A31 = new Subject("A31","\t\tIT 212","\t\tDiscrete Structurest\t\t",units);
    Subject Engl3 = new Subject("984","\t\tEngl 3","\t\tSpeech and oral Communicationt\t\t",units);
    Subject Theo3 = new Subject("582","\t\tTheo 3","\t\tChrist and Sacramentst\t\t",units);
    Subject Stat = new Subject("470","\t\tStata1","\t\tProbablility and Statisticst\t\t",units);
    Subject Dota = new Subject("999","\t\tDota 2","\t\tDota Guide\t\t\t\t",units);

    ArrayList<Subject> arrList = new ArrayList<Subject>();

    arrList.add(CS212);
     arrList.add(IT312);
     arrList.add(IT313);
     arrList.add(CS313);
     arrList.add(Disc);
     arrList.add(A31);
     arrList.add(Engl3);
     arrList.add(Theo3);
     arrList.add(Stat);
     arrList.add(Dota);
//User input that he wants to search
for(int i = 0; i < 3; i++,num++)
    {   

        System.out.print("\t\t"+num +". ");
        codeNo[i] = scan.next();
        String output = Character.toUpperCase(codeNo[i].charAt(0)) + codeNo[i].substring(1);
        codeNo[i] = output;
    }

        // This is what I tried but it doesn't work Idk why
        for (Subject s : arrList) {

            for(int i =0; i < codeNo.length; i++)

                  if (s.equals(codeNo[i])) {

                    System.out.println("\t\t\t"+s);



                  } 

            }

public Subject(String codeNo, String subjectID, String title , int unit)
{
 //Constructor . .
}
//Desired output
Code to search
A25
A26
A27
output
A25     CS 212      Data Structures         3
A26     IT 312      Data Base Management System 2   3
A27     IT 312      Data Base Management System 2   3

【问题讨论】:

  • 实际输出是多少?
  • 假设输入工作正常,您应该使用 s.code.equals(codeNo[i]) 而不是 s.equals(codeNo[i])。您现在正在比较主题对象。

标签: java search arraylist


【解决方案1】:

您正在尝试搜索主题的数组列表,您需要编写一个小函数来将代码字符串与类的相应字符串进行比较。您可以通过将其添加到您的主题类来做到这一点。

例子:

@Override
public boolean equals(String code) {
    return code.equals(this.<compare to member>);
}

并将比较更改为需要匹配您匹配的代码的成员。

编辑:更简单的方法是将现有代码更改为:

if (s.code.equals(codeNo[i])) //assuming your code class member is a public string

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    相关资源
    最近更新 更多