Java 特定条件下的文本文件(或URL)操作

Java 特定条件下的文本文件(或URL)操作,java,Java,我最近启动了一个小项目,其目标是使用两个单独(和本地)txt文件中的两个列表执行以下操作(我将在下面提供有关这些列表的更多详细信息): 阅读并评估列表#1中的信息,该信息包含几个简单表单,其中包含3-4个元素,如名称、时区和类别,并取其中两个(时区和类别)的值,并使用它们与列表#2中的相同值进行比较,如果这两组比较值中的两个用户之间存在匹配,则让程序使用“Name1 | Name2”格式输出结果 为了进一步阐述这一点,我在这里使用的是一个辅导计划,其中列表1包含关于一些学徒的特定信息,而列表

我最近启动了一个小项目,其目标是使用两个单独(和本地)txt文件中的两个列表执行以下操作(我将在下面提供有关这些列表的更多详细信息):

  • 阅读并评估列表#1中的信息,该信息包含几个简单表单,其中包含3-4个元素,如名称、时区和类别,并取其中两个(时区和类别)的值,并使用它们与列表#2中的相同值进行比较,如果这两组比较值中的两个用户之间存在匹配,则让程序使用“Name1 | Name2”格式输出结果
为了进一步阐述这一点,我在这里使用的是一个辅导计划,其中列表1包含关于一些学徒的特定信息,而列表2有相同类型的数据,只是针对导师。两者都如下所示(示例):

名称:Anabel
时区:EST(也可以是UCT/PST)
类别:A1、B1、C1(这是学徒需要学习的内容)

因此,本质上,我希望我的程序能够(1)读取包含学徒申请的第一个txt文件,(2)评估时区和类别字段,(3)将其值与包含导师档案的第二个txt文件中相同字段的值进行比较,(4)如果时区和至少一个学习类别中存在匹配,(5)在新的txt文件中写入导师姓名,后跟学徒姓名,使用管道符号(“|”)将两者分开。换句话说,最终结果是:“导师X已经与学徒Y配对”

现在,我有一些Java方面的经验,我知道如何使用Java.util.Scanner和Java.io包中的公共类来读取、写入和搜索txt文件,但我不知道如何在这两个txt文件之间进行上述比较并获得所需的输出。我也在这个网站上搜索了一些可以帮助我做到这一点的东西,但不幸的是,我没有太多的运气,所以我希望我能从那些真正的Java编程专家那里得到一些公开的帮助


其他信息:

  • 这个项目的主要信息(学徒和导师列表)是我从两个独立的论坛线程中手动提取的,我认为让我的程序访问这两个线程的URL并从那里收集它从txt文件中提取的相同数据可能会更容易。如果我走这条路,我会很高兴使用Jsoup库,因为我熟悉CSS和类似jQuery的选择器以及HTML,但是一旦选择了我想要使用的元素,我就会再次陷入不知道如何与从两个位置提取的信息进行比较并生成结果的困境
  • 该导师-学徒分配流程将每月进行一次,每轮注册的学徒总数约为60人;注册应用程序也遵循我在上面几段中展示的格式

任何帮助都将不胜感激。提前谢谢

我建议定义像
Tutor
Student
这样的类,从文件/url中列出两个列表,并运行一些比较。至于compare func,它的实现应该不会很复杂

示例(我很懒,所以我将使用一个类;]另外,添加适当的修饰符):

抽象类人物{
字符串名;
字符串时区;
设置类别;
/**返回与给定人员匹配的类别数*/
整数匹配(个人){
if(person==null | |!person.timezone.equals(this.timezone))
返回0;
Set intersection=新哈希集(this.categories);
交叉口。保留(个人。类别);
返回intersection.size();
}
个人最佳匹配(列出个人){
if(persons==null | | persons.isEmpty())
返回null;
int maxMatch=0;
int matchedPerson=null;
用于(人:人){
int m=匹配(人);
如果(m>maxMatch){
maxMatch=m;
匹配的人=人;
}
}
返回匹配的人;
}
}
用法示例:

List<Person> tutors = gatherTutors();
List<Person> students = gatherStudents();

for(Person student : students){
    Person tutor = student.bestMatch(tutors);
    if(tutor!=null)
        System.out.println("tutor "+tutor.name+" has been paired with apprentice "+student.name);
}
List tutors=gatherTutors();
列出学生=收集学生();
个人(学生:学生){
个人导师=学生。最佳匹配(导师);
如果(导师!=null)
System.out.println(“tutor”+tutor.name+”已与学徒“+student.name”配对);
}
当然,你们可以使它更准确,或者更平衡——例如,若找到了最佳匹配,从列表中删除导师,并在匹配之前按类别编号对学生进行排序