如何搜索arraylist中的项目?

时间:2016-05-05 13:48:23

标签: java

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

3 个答案:

答案 0 :(得分:3)

您可以使用

Java.util.ArrayList.indexOf(Object)

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

或者

java.util.ArrayList.Contains(Object o)

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

答案 1 :(得分:1)

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

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);

答案 2 :(得分:1)

由于您的问题没有提供足够的信息,我会做一些事情:

//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()))