我想根据扫描器输入是否与所述索引中的任何单词匹配来返回ArrayList索引的内容。
因此,如果ArrayList索引0包含
<dog, cat, mouse>`
和索引1包含
<football, baseball, rugby>
和scanner input = "football"
,
应该打印整个索引1。
但是,我不确定如何做到这一点,所以任何建议都会很棒。
编辑:
下面的代码读取我从中获取数据的文件,并将每个单独的行存储为索引。
while (fileScanner.hasNextLine()) {
editList.add(fileScanner.nextLine());
}
下面的代码读取输入,如果在editList中找到editScanner输入,则应打印索引。但是,我知道这是不正确的,但我完全不确定如何将索引的内容打印为String
if (editList.contains(editScanner)) {
while (((edit = fileReader.readLine()) != null)) {
String chosenFilm = editList.indexOf(editScanner);
}
答案 0 :(得分:0)
以这种方式使你的列表成为集合的arraylist:
List<Set<String>> yourList = new ArrayList<>();
然后检查你是否要打印索引,因为它上面有足球
yourList.get(i).contains("football")
如果您无法在各种索引上重复足球,请使用地图代替,使用足球作为关键,并将足球指数作为值。然后,您可以检查索引并直接从列表中打印该索引。
答案 1 :(得分:0)
考虑到您的结构是List<List<String>>
和input
:
List<List<String>> list = new ArrayList<>();
list.add(Arrays.asList("dog", "cat", "mouse"));
list.add(Arrays.asList("football", "baseball", "rugby"));
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
您可以按照以下操作
迭代不同的subLists
并找到好的(当你找到时停止)
int index = -1;
for (int i = 0; i < list.size(); i++) { // iterate
if (list.get(i).contains(input)) { // check if present
index = i; // keep index
break;
}
}
使用Streams
index = list.stream() // iterate
.filter(l -> l.contains(input)) // keep sublist where present
.mapToInt(list::indexOf) // transform it to its index
.findFirst() // keep index
.orElse(-1); // if not found return -1