我正在创建一个可以添加,删除和搜索用户输入名称的gui。我想知道让我搜索arraylist中的项目的代码。谢谢
答案 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()))