数据快速查询的新方法
来源:互联网 发布:android 数据流量统计 编辑:程序博客网 时间:2024/04/27 14:15
/**//*
* Main.java
*
* Created on 2006年11月20日, 下午4:29
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package chartest;
/** *//**
*
* @author longronglin
*/
import java.util.Random;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
public class Main
...{
private static final int Max = 10019;
private static String[] keyWord = new String[Max];
private static long[] keyNum = new long[Max];
private static String charsetName = "gbk";
/** *//** Creates a new instance of Main */
public Main()
...{
}
/** *//**
* @param args the command line arguments
*/
public static void main(String[] args)
...{
/** *//** 关键词文件 */
String keyWordFile = "d:/keyword.txt";
/** *//** 读取关键词 并存入keyWord数组中 */
readKeyWord(keyWordFile);
/** *//** 关键词文件对应的前8位字节的long型数 */
String keyNumFile = "d:/keywordNum.txt";
/** *//** 读取对应的数 并存入keyNum数组中 */
readKeyNum(keyNumFile);
/** *//** 根据keyWordFile中的关键词算出每个词的前8位字节对应的long数据 并存入keyNumfile文件中 */
//writeNumFile(keyWordFile,keyNumFile);
int i = 0;
/** *//** 对字符串进行顺序查找 */
long startTime = System.currentTimeMillis();
for(i=0;i<keyWord.length-3;i++)
...{
/** *//** 字符串对应的首次出现的序号 */
keyWordSearch(keyWord[i]);
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
System.out.println("The first end");
/** *//** 对keyNum数组进行排序从小到大 */
Arrays.sort(keyNum);
startTime = System.currentTimeMillis();
for(i=0;i<keyWord.length-3;i++)
...{
int len = 0;
/** *//** 字符串对应的首次出现的序号 */
try
...{
len = keyWord[i].getBytes(charsetName).length;
}
catch(Exception e)
...{
e.getStackTrace();
}
if(len <= 8)
...{
keyNumSearch(keyWord[i]);
}
else
...{
keyWordSearch(keyWord[i]);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
public static void readKeyWord(String fileName)
...{
int i = 0;
try
...{
BufferedReader in = new BufferedReader(new FileReader(fileName));
String strTemp = null;
while ((strTemp = in.readLine()) != null)
...{
keyWord[i]=strTemp;
i++;
}
in.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
public static void readKeyNum(String fileName)
...{
int i = 0;
try
...{
BufferedReader in = new BufferedReader(new FileReader(fileName));
String strTemp = null;
while ((strTemp = in.readLine()) != null)
...{
keyNum[i]=Long.parseLong(strTemp);
i++;
}
in.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
public static final long getLongOfByteArray (byte[] bytes)
...{
long result = 0;
int len =0;
if(bytes.length<8)
...{
len = bytes.length;
}
else
...{
len = 8;
}
for (int i=0; i<len ; i++)
...{
result=result<<8;
result=result+(bytes[i]&0xff);
}
return result;
}
public static long keyWordSearch(String str)
...{
int result=0;
for(int i=0; i<keyWord.length; i++)
...{
if(str.equals(keyWord[i]))
...{
result = i;
//System.out.println(i);
return(i);
}
}
return -(result+1);
}
public static long keyNumSearch(String str)
...{
byte[] strByte = null;
long result = 0;
try
...{
strByte = str.getBytes(charsetName);
}
catch(Exception e)
...{
e.getStackTrace();
}
long keyWordNum = getLongOfByteArray(strByte);
long index = Arrays.binarySearch(keyNum,keyWordNum);
if(index>0)
...{
return index;
}
return -(result+1);
}
public static void writeNumFile(String srcFile,String dstFile)
...{
File SrcFile=new File(srcFile);
if(!SrcFile.exists())
...{
System.err.println("Can't Find " + srcFile);
}
try
...{
BufferedReader in = new BufferedReader(new FileReader(SrcFile));
BufferedWriter out = new BufferedWriter(new FileWriter(dstFile));
String str = null;
while ((str = in.readLine()) != null)
...{
try
...{
out.write(String.valueOf(getLongOfByteArray(str.getBytes(charsetName))));
out.newLine();
}
catch (IOException e)
...{
}
}
in.close();
out.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
}
* Main.java
*
* Created on 2006年11月20日, 下午4:29
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package chartest;
/** *//**
*
* @author longronglin
*/
import java.util.Random;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.util.Arrays;
import java.util.Map;
import java.util.HashMap;
public class Main
...{
private static final int Max = 10019;
private static String[] keyWord = new String[Max];
private static long[] keyNum = new long[Max];
private static String charsetName = "gbk";
/** *//** Creates a new instance of Main */
public Main()
...{
}
/** *//**
* @param args the command line arguments
*/
public static void main(String[] args)
...{
/** *//** 关键词文件 */
String keyWordFile = "d:/keyword.txt";
/** *//** 读取关键词 并存入keyWord数组中 */
readKeyWord(keyWordFile);
/** *//** 关键词文件对应的前8位字节的long型数 */
String keyNumFile = "d:/keywordNum.txt";
/** *//** 读取对应的数 并存入keyNum数组中 */
readKeyNum(keyNumFile);
/** *//** 根据keyWordFile中的关键词算出每个词的前8位字节对应的long数据 并存入keyNumfile文件中 */
//writeNumFile(keyWordFile,keyNumFile);
int i = 0;
/** *//** 对字符串进行顺序查找 */
long startTime = System.currentTimeMillis();
for(i=0;i<keyWord.length-3;i++)
...{
/** *//** 字符串对应的首次出现的序号 */
keyWordSearch(keyWord[i]);
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
System.out.println("The first end");
/** *//** 对keyNum数组进行排序从小到大 */
Arrays.sort(keyNum);
startTime = System.currentTimeMillis();
for(i=0;i<keyWord.length-3;i++)
...{
int len = 0;
/** *//** 字符串对应的首次出现的序号 */
try
...{
len = keyWord[i].getBytes(charsetName).length;
}
catch(Exception e)
...{
e.getStackTrace();
}
if(len <= 8)
...{
keyNumSearch(keyWord[i]);
}
else
...{
keyWordSearch(keyWord[i]);
}
long endTime = System.currentTimeMillis();
System.out.println(endTime-startTime);
}
}
public static void readKeyWord(String fileName)
...{
int i = 0;
try
...{
BufferedReader in = new BufferedReader(new FileReader(fileName));
String strTemp = null;
while ((strTemp = in.readLine()) != null)
...{
keyWord[i]=strTemp;
i++;
}
in.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
public static void readKeyNum(String fileName)
...{
int i = 0;
try
...{
BufferedReader in = new BufferedReader(new FileReader(fileName));
String strTemp = null;
while ((strTemp = in.readLine()) != null)
...{
keyNum[i]=Long.parseLong(strTemp);
i++;
}
in.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
public static final long getLongOfByteArray (byte[] bytes)
...{
long result = 0;
int len =0;
if(bytes.length<8)
...{
len = bytes.length;
}
else
...{
len = 8;
}
for (int i=0; i<len ; i++)
...{
result=result<<8;
result=result+(bytes[i]&0xff);
}
return result;
}
public static long keyWordSearch(String str)
...{
int result=0;
for(int i=0; i<keyWord.length; i++)
...{
if(str.equals(keyWord[i]))
...{
result = i;
//System.out.println(i);
return(i);
}
}
return -(result+1);
}
public static long keyNumSearch(String str)
...{
byte[] strByte = null;
long result = 0;
try
...{
strByte = str.getBytes(charsetName);
}
catch(Exception e)
...{
e.getStackTrace();
}
long keyWordNum = getLongOfByteArray(strByte);
long index = Arrays.binarySearch(keyNum,keyWordNum);
if(index>0)
...{
return index;
}
return -(result+1);
}
public static void writeNumFile(String srcFile,String dstFile)
...{
File SrcFile=new File(srcFile);
if(!SrcFile.exists())
...{
System.err.println("Can't Find " + srcFile);
}
try
...{
BufferedReader in = new BufferedReader(new FileReader(SrcFile));
BufferedWriter out = new BufferedWriter(new FileWriter(dstFile));
String str = null;
while ((str = in.readLine()) != null)
...{
try
...{
out.write(String.valueOf(getLongOfByteArray(str.getBytes(charsetName))));
out.newLine();
}
catch (IOException e)
...{
}
}
in.close();
out.close();
}
catch (IOException e)
...{
e.getStackTrace();
}
}
}
- 数据快速查询的新方法
- 快速查询大量数据的hash_table
- Sphinx 实现海量数据的快速查询
- Hibernate 查询新方法-----QBC
- 在C#中快速比对图片的新方法
- 在C#中快速比对图片的新方法
- ASP.NET 2.0中页面间传递数据的新方法
- 2.JSON的新方法及data-自定义数据
- Oracle笔记——快速删除查询重复的数据
- jQuery 数据列表快速查询
- 为什么HBase数据查询快速
- Android baselistview 数据渲染新方法
- 磁盘碎片整理的新方法
- 调用js的新方法
- 关于UVa10048 的新方法
- 判断素数的新方法
- 情感分析的新方法
- [情感分析的新方法]
- Linux上搭建C/C++IDE开发环境
- GridView中访问特定控件
- Outlook Express 不能收发邮件的故障维护
- 在asp.net页面中传递中文参数
- 在VC.net MFC对话框中调用C#组件
- 数据快速查询的新方法
- 嵌入式Linux操作系统的广泛应用分析
- ASP.NET程序设计摘记
- DELPHI如何利用BHO更改网页内容
- C# 利用正则表达式进行忽略大小写的字符串替换的应用--自定义高亮显示
- ASP.NET中GridView的自定义分页
- sockaddr与sockaddr_in结构体简介
- asp.net2.0中读取web.config数据库连接字符串2种方法
- 时间格式的正值表达式(好东西收藏下)