基于用户的相似性函数的定义:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class MapperReduce {
String input="F:\\input.txt";
String output="F:\\output.txt";
public void set_input(String input){
this.input=input;
}
public void set_output(String output){
this.output=output;
}
public void clear_tmpfile() throws IOException{
FileWriter fw=new FileWriter("F:\\map_result.txt");
String line="";
fw.write(line);
fw.close();
}
public MapperReduce(String input,String output){//文件初始化,如果存在则删除
this.input=input;
this.output=output;
File file=new File("F:\\map_result.txt");
if(file.exists()){
file.delete();
}
File file1=new File(this.output);
if(file1.exists()){
file1.delete();
}
}
public Map<String,List<String>> shuff() throws IOException{//shuffle过程,将mapper处理结果相同key的记录合并
BufferedReader br=new BufferedReader(new FileReader("F:\\map_result.txt"));
String line="";
Map<String, List<String>> map=new HashMap<String, List<String>>();
while((line=br.readLine())!=null){
String[] content=line.split(" ",2);
if(map.containsKey(content[0])){
List<String> list=new ArrayList<String>();
list=map.get(content[0]);
if(content.length==2){
list.add(content[1]);
}else{
list.add(" ");
}
map.remove(content[0]);
map.put(content[0],list);
}else{
List<String> lis