读取txt文件并记录它';s页面-JAVA

读取txt文件并记录它';s页面-JAVA,java,data-structures,array-algorithms,Java,Data Structures,Array Algorithms,我是一名软件新手,这是我第一次来这里,如果我在错误的地方发帖,非常抱歉。我有一个任务,就是阅读一个文本文件,其中有很多行(40行组成一页),将其拆分为单词,并记录每个单词的所有出现情况以及发生情况的所有页面 关键是我只能使用链表(我可以创建自己的方法)和数组。我花了很长时间,但我只能存储拆分的单词,即使如此,我仍在努力记录页面和单词频率的逻辑部分。。。我在哪里存储每个单词的页码?它应该在一个数组中吗?或者我应该创建一个“Word”类来存储事件和页码?如果是这样,我是否也应该创建一个“Page”类

我是一名软件新手,这是我第一次来这里,如果我在错误的地方发帖,非常抱歉。我有一个任务,就是阅读一个文本文件,其中有很多行(40行组成一页),将其拆分为单词,并记录每个单词的所有出现情况以及发生情况的所有页面

关键是我只能使用链表(我可以创建自己的方法)和数组。我花了很长时间,但我只能存储拆分的单词,即使如此,我仍在努力记录页面和单词频率的逻辑部分。。。我在哪里存储每个单词的页码?它应该在一个数组中吗?或者我应该创建一个“Word”类来存储事件和页码?如果是这样,我是否也应该创建一个“Page”类来管理它?老实说,我已经尝试了这两种方法,但似乎没有一种对我有效,最后代码变得缓慢、混乱,我只是感到困惑lol

已经感谢你们的帮助了

编辑:以下是我对问题的阅读和拆分部分的理解。这一次,我决定将所有单词存储在linkedList中。这里我改为3行=1页。我也在最后留下了几行文字,问题是我不知道在哪里以及如何记录每三行的页码

public void loadBook(){  
    Path path1 = Paths.get("alice.txt");
    int countLines = 0;
    stopwords(); //another method to load the stopwords
    try (BufferedReader reader = Files.newBufferedReader(path1, Charset.defaultCharset())) {
        String line = null;
        while ((line = reader.readLine()) != null) {
            String[] split = line.split(" ");
            ++countLines;
            for (int i = 0; i < split.length; ++i){
                if (stopwords.notContains(split[i].toLowerCase())){
                    pages.add(split[i]);
                }
            }   
            if (countLines % 3 == 0) {
                countPages++;
                countLines = 0;
            }
        }
    } catch (IOException e) {
        System.err.format("Erro na leitura do arquivo: ", e);
    }
}
public void loadBook(){
Path path1=Path.get(“alice.txt”);
int countLines=0;
stopwords();//加载stopwords的另一个方法
try(BufferedReader=Files.newBufferedReader(路径1,Charset.defaultCharset())){
字符串行=null;
而((line=reader.readLine())!=null){
String[]split=line.split(“”);
++计数线;
对于(int i=0;i
第一章兔子洞下

爱丽丝开始对坐在她姐姐旁边的沙发上感到非常厌倦 银行,和无事可做:有一两次她窥视了一下银行 她姐姐正在读的书,但里面没有图片和对话 爱丽丝想,没有图画和图画的书有什么用呢 对话?”

因此,她在考虑自己的想法(以及她能做的,为了未来) 炎热的一天使她感到很困倦和愚蠢),是否快乐 做一个雏菊链是值得的麻烦起床和睡觉 采摘雏菊时,突然一只粉红色眼睛的白兔跑了 靠近她

没有什么比这更了不起的了;爱丽丝也不这么认为
听到兔子自言自语道:“哦,天哪

首先,我想到了一个类来封装从文本中提取所需的数据。您需要单个单词,对于每个单词,您需要计算该单词在整个文本中出现的次数,以及该单词出现的页面列表。因此,我编写了以下
WordRef

import java.util.LinkedList;
导入java.util.Objects;
公共类WordRef{
/**“单词”在文本中出现的次数*/
私人事件;
/**实际的单词*/
私有字符串字;
/**出现“word”的页码列表*/
私人链接列表页面;
/**
*创建并返回此类的实例。
* 
*@param单词-实际单词。
*/
公共字参考(字符串字){
对象。requirennull(单词,“空单词”);
这个单词=单词;
发生率=1;
pages=新链接列表();
}
/**增加“word”的出现次数*/
公共无效事件发生次数(){
事件++;
}
/**
*将“页面”添加到包含“word”的页面列表中。
* 
*@param page-要添加的页码。
*/
公共无效添加页(整数页){
如果(!pages.contains(第页)){
页面。添加(第页);
}
}
/**
*@返回“word”的出现次数。
*/
公共int getoccurrents(){
返回事件;
}
/**
*@返回实际的“单词”。
*/
公共字符串getWord(){
返回词;
}
/**
*如果两个“WordRef”实例都包含完全相同的单词,则它们是相等的。
*/
公共布尔等于(对象obj){
布尔相等=假;
如果(obj!=null){
类objClass=obj.getClass();
if(objClass.equals(getClass())){
WordRef其他=(WordRef)obj;
字符串otherWord=other.getWord();
相等=单词。相等(其他单词);
}
}
回报相等;
}
/**
*相等的“WordRef”实例应各自返回相同的哈希代码。
*/
公共int hashCode(){
返回word.hashCode();
}
/**
*返回此实例的字符串表示形式。
*/
公共字符串toString(){
返回String.format(“%s{%d}%s”,单词,出现次数,页面);
}
}
请注意,
LinkedList
的元素必须是对象,因此使用
Integer
而不是
int
,因为
int
是原语。还要注意,我们需要确定两个
WordRef
实例是否包含相同的单词。因此类
WordRef
包含方法
equals()
,并且根据类
java.lang.Object
的javadoc,如果类重写方法
equals()
,那么它也应该重写方法
hashCode()

现在来看看读取文本并对其进行处理的代码。在你的问题里哟
Alice {3} [1, 3]
was {4} [1, 2, 3]
beginning {1} [1]
to {4} [1, 3]
get {1} [1]
very {2} [1, 2]
tired {1} [1]
of {6} [1, 2, 3]
sitting {1} [1]
by {2} [1, 2]
her {5} [1, 2]
sister {2} [1]
on {1} [1]
the {9} [1, 2, 3]
bank {1} [1]
and {4} [1, 2]
having {1} [1]
nothing {2} [1, 3]
do {1} [1]
once {1} [1]
or {3} [1]
twice {1} [1]
she {3} [1, 2]
had {2} [1]
peeped {1} [1]
into {1} [1]
book {2} [1]
reading {1} [1]
but {1} [1]
it {3} [1, 3]
no {1} [1]
pictures {2} [1]
conversations {2} [1]
in {3} [1, 2, 3]
what {1} [1]
is {1} [1]
use {1} [1]
a {3} [1, 2]
thought {1} [1]
without {1} [1]
So {1} [2]
considering {1} [2]
own {1} [2]
mind {1} [2]
as {2} [2]
well {1} [2]
could {1} [2]
for {1} [2]
hot {1} [2]
day {1} [2]
made {1} [2]
feel {1} [2]
sleepy {1} [2]
stupid {1} [2]
whether {1} [2]
pleasure {1} [2]
making {1} [2]
daisy {1} [2]
chain {1} [2]
would {1} [2]
be {1} [2]
worth {1} [2]
trouble {1} [2]
getting {1} [2]
up {1} [2]
picking {1} [2]
daisies {1} [2]
when {1} [2]
suddenly {1} [2]
White {1} [2]
Rabbit {2} [2, 3]
with {1} [2]
pink {1} [2]
eyes {1} [2]
ran {1} [2]
close {1} [2]
There {1} [3]
so {2} [3]
VERY {2} [3]
remarkable {1} [3]
that {1} [3]
nor {1} [3]
did {1} [3]
think {1} [3]
much {1} [3]
out {1} [3]
way {1} [3]
hear {1} [3]
say {1} [3]
itself {1} [3]
Oh {1} [3]
dear {1} [3]