在Java中搜索文件中的子字符串、返回行和位置

在Java中搜索文件中的子字符串、返回行和位置,java,substring,bufferedreader,Java,Substring,Bufferedreader,我想写一个程序,它以一个字符串作为输入,在java文件中搜索该字符串,并输出该字符串所在的行和位置 我的主要问题是为我的结果创建一个“存储”。 我不能使用列表,所以我想用二维数组[]来解决这个问题。但我不能只为每一行添加一个新的第一级元素,为字符串出现的每个位置添加一个第二级元素 我必须知道有多少字符串可以创建数组,不是吗 我的主要想法是:我需要通过input.readLine()读入一行,并使用indexOf()检查子字符串是否在该行中。如果是,则保存位置A并继续搜索,直到返回-1。我继续,直

我想写一个程序,它以一个字符串作为输入,在
java
文件中搜索该字符串,并输出该字符串所在的行和位置

我的主要问题是为我的结果创建一个“存储”。 我不能使用列表,所以我想用二维数组[]来解决这个问题。但我不能只为每一行添加一个新的第一级元素,为字符串出现的每个位置添加一个第二级元素

我必须知道有多少字符串可以创建数组,不是吗

我的主要想法是:我需要通过
input.readLine()
读入一行,并使用
indexOf()
检查子字符串是否在该行中。如果是,则保存位置A并继续搜索,直到返回-1。我继续,直到
input。readLine
返回
null
。 如果这个概念是正确的,我只需要解决“存储”问题。

您可以使用multimap

    HashMap<String, List<Integer>> map = new HashMap<String, List<Integer>>();
    ArrayList<Integer> lineAndPosition = new ArrayList<Integer>();
    lineAndPosition.add(1); //line number
    lineAndPosition.add(23); //position number 
    map.put("key", lineAndPosition);
HashMap map=newhashmap();
ArrayList lineAndPosition=新的ArrayList();
线性和位置。添加(1)//行号
线性和位置。添加(23)//职位编号
地图放置(“键”、线和位置);

所以每个键将映射到一个数组,该数组将存储行号和发生位置

你想只存储位置吗?你可以用必要的细节创建自己的类,然后创建该类的ArrayList!如果主要目的只是打印行位置和字符串,那么是否需要“存储”实际值?为什么不在找到匹配项时将其打印出来呢?或者您甚至可以使用HashMap,将key作为行号,value作为位置。当然,只有在每行只需要存储一个位置时,这才有效。