
正文
海量java代码 javagui代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何java读取海量中文文本
使用Boyer-Moore算法
或者使用KMP算法
建议使用后者
KMP算法(java)
public class KMP {
/**
* @param args
*/
//计算模式串的next值
public static void getNext(String strModel, int dNext[]){
int i = 0,j = 1;
dNext[1] = 0;
while(j strModel.length()){
while(i 0 strModel.charAt(i) != strModel.charAt(j))//递推
i = dNext[i];
i++;
j++;
if(j == strModel.length())
break;
if(strModel.charAt(j) == strModel.charAt(i))//得出next值
dNext[j] = dNext[i] + 1;
else
dNext[j] = i;
}
}
//利用next值查询子串
public static int getSubString(String strMain, String strModel, int dStart){
int dPos = -1;
int i = dStart;
int j = 1;
int dNext[] = new int[200];
getNext(strModel, dNext);
while(istrMain.length()){
if(strMain.charAt(i) == strModel.charAt(j)){//当前字符匹配
if(j == (strModel.length()-1)){//查找成功
dPos = i - j + 1;
break;
}
i++;
j++;
}
else{//当前字符不匹配
if(dNext[j] == 0){
i++;
j = 1;
}
else{
j = dNext[j];
}
}
}
return dPos;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String strModel = " jlsdjflskjdm";
int[] dNext = new int[20];
getNext(strModel, dNext);
for(int i = 1; istrModel.length(); i++)
System.out.print(dNext[i] + " ");
String strMain = " aaaaaaaaaaabbbcdabbksfjlsdjflskjd";
System.out.println();
System.out.println(getSubString(strMain, strModel, 1));
}
}
相关问答
Q1: java 如何批量生成海量文件不会内存溢出
你好,再生成指定数量后休眠一段时间既可以
Thread.sleep(5000);
然后再生成文件
再休眠
这样循环。。。
希望可以帮到你!
Q2: 如何进行java海量数据处理,下面一段是我摘抄的问题及处理方法
lz没理解第二步“分而治之”的思想,分治算法是将一个大问题分解为一系列与大问题性质相同的子问题,所以在分治时不可能把相同的ip分配到不同的文件中,就像你所说的,“按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中”,通过hash,两个相同的ip肯定放到同一个文件中了哈
关于海量java代码和javagui代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







