前几天帮同学作了个很小的project,
引用
Example1. Assume the content of the file is:
abc,def
abc def! ghi jkl?
xyz abc ppp
xyz xyz def
It contains fouro bjects.The first object consists of twotokens abc and def.The last object consists of three tokens xyz, xyz,def.
The similarity between the first object and the second object is 2.If the similarity threshold is 2,the
output of the join should be
01
Note that the following output is wrong.
10
If the threshold is 1,the output should be
01
02
12
03
13
23
大体意思就是给定一个文件,里面有上面所说的那种类型的输入,然后你要把.,?!\t"; 这些字符去掉,然后比较每一行的相似度,程序会有一个参数,这个参数就是最小相似度,小于这个相似度的值都不会被打印。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.io.*;
public class Data {
/**
* @param args
*/
private int threshold=0;
private final String regex="[\\.,? \\t!]++";
private String file;
private String mode;
private List <String> l=new ArrayList<String>();
private Map<String,List<Integer>> m=new HashMap<String,List<Integer>>();
public int sim(String[] s1,String[] s2){
int frag=0;
for(int i=0;i<s1.length;i++){
for(int j=0;j<s2.length;j++){
if(s1[i].equals(s2[j])){
frag++;
break;
}
}
}
return frag;
}
public void nSSJoin(List<String> l,int threshold){
for(int j=0;j<l.size();j++){
for(int i=j+1;i<l.size();i++){
int s=sim(l.get(j).split(regex),l.get(i).split(regex));
if(s>=threshold){
System.out.println(j+" "+i);
}
}
}
}
public void SSJoin(List<String> l,int threshold){
index(l);
for(int j=0;j<l.size();j++){
for(int i=j+1;i<l.size();i++){
int s=Ssim(l.get(j).split(regex),l.get(i).split(regex),i,j);
if(s>=threshold){
System.out.println(j+" "+i);
}
}
}
}
private int Ssim(String[] strings, String[] strings2,int i,int j) {
// TODO Auto-generated method stub
int tmp=0;
for(int k=0;k<strings.length;k++){
if(m.get(strings[k]).contains(i)){
tmp++;
}
}
return tmp;
}
public void index(List<String> l){
String[] temp1;
for(int i=0;i<l.size();i++){
temp1=l.get(i).split(regex);
for(int j=0;j<temp1.length;j++){
if(m.containsKey(temp1[j])){
m.get(temp1[j]).add(i);
}else{
List <Integer> l1=new ArrayList<Integer>();
l1.add(i);
m.put(temp1[j],l1);
}
}
}
}
public static void main(String[] args) throws IOException {
String inputLine;
Data d= new Data();
// TODO Auto-generated method stub
d.mode=args[0];
d.file=args[1];
d.threshold=Integer.valueOf(args[2]);
BufferedReader br= new BufferedReader(new FileReader(d.file));
while((inputLine=br.readLine())!=null){
d.l.add(inputLine);
}
//d.SSJoin(d.l, d.threshold);
//Map<String, int[]> k=d.index(d.l);
if(d.mode.equals("nSSJoin")){
d.nSSJoin(d.l,d.threshold);
}else if(d.mode.equals("SSJoin")){
d.SSJoin(d.l, d.threshold);
}else{
System.err.println("Mode is error");
}
}
}
分享到:
相关推荐
相关链接一个 Weekend Project 引发的产品设计思考「同学在哪儿」小程序小程序 Sketch 设计稿小程序二维码开发技术栈大量的TypeScript社会保障体系云开发如果你想对这个小程序进行二次开发,你可以 fork 这个仓库,...
Project教程,详细讲解了Project的基础功能使用和任务计划表的制作。对于初次接触Project的同学来说值得一看
初次接触Project的同学们,可以看一下,不错的入门教程!
Microsoft Project是一款强大的项目管理软件,它被广泛应用于各种规模的组织,用于规划、调度和跟踪项目进度。该软件提供了一系列工具,帮助项目经理有效地管理资源、时间和成本,确保项目的顺利进行。 【管理视图...
"Tudoucms校园跑腿同学小程序源码.rar" 是一个压缩文件,其核心内容是 Tudoucms 的校园跑腿服务小程序的源代码。Tudoucms 是一款可能用于构建校园生活服务平台的 CMS(内容管理系统),而“校园跑腿同学”则可能是一...
基于51单片机做的双电机驱动的小车,proteus仿真成功,按钮控制前后左右转,c语言代码也写好了,都是最基础的,适合刚接触单片机的同学进行改良,由于51单片机具有良好的拓展性,大家可在此文件上进行附加模块实现更...
这个项目标题表明这是一个小型的开发项目,主要目的是为了供学习者或同学们使用。通常这样的项目可能是为了教学、练习编程技能或者合作完成某个特定的学习任务。在IT领域,尤其是JavaScript相关的项目,它可能涉及...
标题 "lifen-project" 暗示这是一个针对学生和教师的毕业设计项目,它提供了用户注册、登录、项目管理和任务互动的功能。描述中提到的技术栈包括 layui、springboot 和 jpa,这些都是在开发 web 应用时常用的技术。...
了解Microsoft Office Project 2007产品系列 了解优秀的项目管理工具如何帮助完成任务 启动Project Standard或Project Professional,辨别Project窗口的主要组成部分 使用视图以不同方式显示项目计划的...
对于p1很清楚是*p1类型,但是对于p2基础不扎实的同学可能有点糊涂,怎么办呢,C++中提供了一个函数typeid(变量名).name(),可以直接使用cout输出类型名,该资源是通过测试的源代码,下载下来双击Project2.vcxproj打开...
综上所述,"Demo project for Spring Boot"这个项目很适合初学者入门,通过它,你可以学习到如何构建一个基于Spring Boot的应用,包括项目的初始化、自动配置、数据库连接、RESTful API的创建、安全管理和日志设置等...
对于学习ASP和数据库管理的初学者来说,这是一个很好的实践案例,可以帮助他们理解和掌握这两项技术的基本原理和实际应用。同时,由于ASP相对较为简单,使得这个系统易于上手和修改,适合于毕业设计或个人项目。
【标题】"校园跑腿微信小程序源码"是一款专为校园内的日常生活服务设计的应用程序,它允许学生通过微信小程序下单,让其他同学帮忙完成诸如取快递、买饭等跑腿任务。这款源码的开放提供了自定义开发和运营校园跑腿...
在这个【项目】中,你被要求设计一个《成绩管理系统》。这是一个典型的信息管理系统,它需要运用到C语言或者类似的编程语言,以及你已经学习的基础知识,如指针、链表、文件读写等。 首先,你需要理解系统的基本...
希望通过这个简单的小项目让需要画函数图像的同学和老师拿到代码后可以立即获得自己想要的图片,而不用再查找公式,重新编写代码,只需要按照注释简单修改参数,就可以获得自己心仪的图形。 代码力求简单。 基本代码...
problem 7 heuristic可以自己调整使用模糊算法来算两个点的距离(7502 expanded nodes,25秒内出结果.满分是9000以下,7000以下多一分额外分),或者直接用 bfs/ucs来算(376 expanded nodes,2.5秒出结果),之前改...
在这一阶段,高策同学可能已经进行了需求分析,明确了软件的目标用户,定义了核心功能,并制定了初步的技术实施方案。 1.2 文件存储 文件存储是项目中的重要一环,决定了数据的持久化方式。设计中可能考虑了不同...
"Qt Project File.zip"这个压缩包文件就是这样一个典型的应用场景,它包含了用于部署Qt项目的必要元素。 首先,我们要理解Qt项目文件(.pro文件)的作用。.pro文件是Qt构建系统的核心,它定义了项目的基本属性,如...
这个"14+++project的SSM项目.rar"文件看起来是一个包含一个名为"14 project的SSM项目"的子文件夹的压缩包,很可能包含了整个SSM项目的所有源代码和配置文件。 首先,让我们详细了解一下SSM框架: 1. **Spring**:...