【问题标题】:How to search for an item in an arraylist? [duplicate]如何在数组列表中搜索项目? [复制]
【发布时间】:2016-08-31 08:16:18
【问题描述】:

我正在创建一个可以添加、删除和搜索用户输入名称的 gui。我想知道让我在数组列表中搜索项目的代码。谢谢

【问题讨论】:

  • 请拿起一本关于 Java 的书或阅读文档/教程。
  • 我们不会在这里为您编写代码,您可以在本网站的欢迎页面中阅读该代码(或者应该有,因为您有金属说的那样)。
  • 您是否尝试过实现任何东西?你试过搜索 StackOverflow 吗?

标签: java


【解决方案1】:

你可以使用

Java.util.ArrayList.indexOf(Object)

方法它将返回列表中第一次出现的元素的索引位置。

或者

java.util.ArrayList.Contains(Object o)

如果指定的元素在列表中可用,上述方法将返回true。

【讨论】:

    【解决方案2】:

    您可以使用谓词在代表您列表的流中进行搜索,这是一个简单的示例:

    List<String> listOfUsersName = Arrays.asList("toto", "tata", "joe", "marou", "joana", "johny", "");
    
    String userInputSearch = "jo";
    
    List<String> result =listOfUsersName.stream()
                                        .filter(user -> user.contains(userInputSearch))
                                        .collect(Collectors.toList());
    
    result.forEach(System.out::println);
    

    【讨论】:

    • 请注意,这仅适用于 Java 8。
    【解决方案3】:

    由于您的问题没有提供足够的信息,我会弥补一些东西:

    //This is your array list that you want to search in:
    private ArrayList<String> names = new ArrayList<>(); // Assume this is full of stuff
    
    //This is the user input
    private String userInput;
    
    //This method will be called when the search button is clicked
    public void onSearchClick() {
    
    }
    

    这就是你要实现搜索算法的方式:

    对于数组列表中的每一项,如果它包含搜索字符串,则将其添加到搜索结果中。

    这很有意义,不是吗?

    在代码中,你会这样写:

    private ArrayList<String> searchInList(ArrayList<String> list, String searchString) {
        ArrayList<String> results = new ArrayList<>();
        for (item in list) {
            if (item.contains(searchString)) {
                results.add(item);
            }
        }
        return results;
    }
    

    然后在onSearchClick 方法中,调用搜索方法并对结果进行处理。

    public void onSearchClick() {
        ArrayList<String> searchResults = searchInList(names, userInput);
        // display the results or whatever
    }
    

    如果要进行不区分大小写的搜索,可以将搜索方法中的 if 语句改成这样:

    if (item.toLowercase().contains(searchString.toLowercase()))
    

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2014-04-21
      • 2020-03-13
      • 2010-10-14
      • 2020-04-05
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多