如何在arraylist中搜索元素?

时间:2014-10-10 05:40:46

标签: java search arraylist

示例是我想搜索代码A25和A29那么它会​​打印出来吗?我似乎找不到在arraylist中搜索长单词的语法。

    ArrayList<String> arrList = new ArrayList<String>();
    arrList.add("A25            CS 212          Data Structures         3");
    arrList.add("A26            IT 312          Data Base Management System 2   3");
    arrList.add("A27            IT 312          Data Base Management System 2   3");
    arrList.add("A28            IT 212          Data Base Management System 2   3");
    arrList.add("A29            CS 313          Digital Design          3");
    arrList.add("A30            IT 212          Discrete Structures     3");
    arrList.add("A25            IT 212          Discrete Structures     3");
    arrList.add("984            Engl 3          Speech and oral Communication   3");
    arrList.add("582            Theo 3          Christ and Sacraments       3");
    arrList.add("470            Stata1          Probablility and Statistics 3");
    arrList.add("999            Dota 2          Dota Guide          3");
    System.out.println("Enter code to search");
    int code = scan.next();
    //Desired output
   Enter code to search: 
   A29
   A30

   A29          CS 313          Digital Design          3
   A30          IT 212          Discrete Structures     3
   //

5 个答案:

答案 0 :(得分:6)

你最好创建一个类,并将branch,rollno..etc等属性添加到该类,并将该类的对象添加到arrayList,并迭代和比较以找到您正在寻找的特定属性。现在很难搜索如此庞大的字符串并看起来很糟糕。

答案 1 :(得分:3)

这个怎么样?

String code = scan.nextLine();
for (String s : arrList) {
  if (s.startsWith(code)) {
    System.out.println(s);
    break; //optional, depending on your use case
  }
}

它应该输出你想要的。

答案 2 :(得分:1)

尝试以下代码

ArrayList<String> arrList = new ArrayList<String>();
        arrList.add("A25            CS 212          Data Structures         3");
        arrList.add("A26            IT 312          Data Base Management System 2   3");
        arrList.add("A27            IT 312          Data Base Management System 2   3");
        arrList.add("A28            IT 212          Data Base Management System 2   3");
        arrList.add("A29            CS 313          Digital Design          3");
        arrList.add("A30            IT 212          Discrete Structures     3");
        arrList.add("A25            IT 212          Discrete Structures     3");
        arrList.add("984            Engl 3          Speech and oral Communication   3");
        arrList.add("582            Theo 3          Christ and Sacraments       3");
        arrList.add("470            Stata1          Probablility and Statistics 3");
        arrList.add("999            Dota 2          Dota Guide          3"); 
     List <String> searchResult = new ArrayList<String>(); 
               for (String content : arrlist) {
                   if(content.matches("a29")){
                       searchresult.add(content);
                   }
               }

答案 3 :(得分:1)

试试这个

List <String> codes = new ArrayList<String>();//list of codes to search
codes.add("A25");
codes.add("A29");
List <String> result = new ArrayList<String>();//list of search results
for(String s:arrList)
    for(String code:codes)
        if (s.startsWith(code))
            result.add(s);
for(String s:result)
     System.out.println(s)

答案 4 :(得分:1)

您可以创建一个散列映射来存储键值对,而不是遍历每个输入搜索代码的所有数组列表,如下所示:

HashMap<String,String> map = new HashMap<String,String>();
map.put("A25","CS 212          Data Structures         3");
map.put("A26","IT 312          Data Base Management System 2   3");
.....
.......

现在,通过code获取元素非常容易。使用HashMap#get(key)方法

String code = scan.nextLine();
System.out.println(code + " " + map.get(code));

这是您想要的输出。

但是,我会说@Task's answer是正确的。