倒排索引的测试.一个超级简单的实现.

本文介绍了一个使用Java实现的简单示例,包括如何通过输入输出流进行文件读写操作,并利用对象序列化技术将集合数据写入文件。此外,还展示了如何从文件中读取并解析这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两个类一个写入对象.一个读入对象


还需要一个词典,写几个词作测试


美人计
美人蕉
美人鱼
美容美发店
美容师
美容术
美容院
美声
美食
美食城
美食家
美事
美术
美术馆
美术家
美术界
美术年
美术片
美术品
美术师
美术室
美术纸
美术字
美谈
美味
美文
美协
美学
美学家
美意



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;


public class Test {
private static Set[] sets = new TreeSet[65535] ;
private static List lists = new ArrayList() ;
public static void main(String[] args) throws IOException {
File file = new File("") ;
System.out.println(file.getAbsolutePath());
InputStream is = new FileInputStream("chinese.dct") ;
InputStreamReader isr = new InputStreamReader(is) ;
BufferedReader br = new BufferedReader(isr) ;
String temp = null ;
int k = 0 ;
while((temp = br.readLine())!=null){
char[] cs = temp.toCharArray() ;
for (int i = 0; i < cs.length; i++) {
if(sets[cs[i]]==null){
sets[cs[i]] = new TreeSet<Integer>() ;
}
sets[cs[i]].add(k) ;
}
lists.add(temp) ;
k++ ;
}
is.close() ;
isr.close() ;
br.close() ;

FileOutputStream fis = new FileOutputStream("index.ansj") ;
ObjectOutputStream oos = new ObjectOutputStream(fis) ;
oos.writeObject(sets) ;
}
}



import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.util.Iterator;
import java.util.Set;


public class Read {
public static void main(String[] args) throws IOException, ClassNotFoundException {
InputStream is = new FileInputStream("index.ansj") ;
ObjectInputStream ois = new ObjectInputStream(is) ;
Set[] sets = (Set[]) ois.readObject() ;
long start = System.currentTimeMillis() ;
Set s1 = sets['美'];
Set s2 = sets['术'];
Iterator it = s2.iterator() ;
int[] ints = new int[10] ;
int k = 0 ;
while(it.hasNext()){
Integer i = (Integer) it.next() ;
if(s1.contains(i)){
ints[k] = i ;
k++ ;
if(k==10) break ;
}
}
System.out.println(System.currentTimeMillis()-start+"毫秒");
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}

}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值