根据扫描仪输入是否与同一索引中的单词匹配,返回ArrayList索引的内容

时间:2018-05-08 08:17:19

标签: java arraylist java.util.scanner

我想根据扫描器输入是否与所述索引中的任何单词匹配来返回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);
                        }

2 个答案:

答案 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();

您可以按照以下操作

  1. 迭代不同的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;
        }
    }
    
  2. 使用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