目前我正在通过Head First Java学习Java,并开始展望更多有关OOP /设计模式的内容.
我的问题是在Head First Java之后应该追求哪本书.我在Head First Design Patterns和Head First Object Oriented Analysis and Design之间徘徊不前.毫无疑问,我可能应该阅读这两个,但我不确定两者之间的区别是什么,哪个更适合作为Head First Java的后续版本.
任何阅读这些建议或细节的人都将不胜感激.
我的任务是读取大型CSV文件(300k +记录)并将regexp模式应用于每条记录.我一直是一名PHP开发人员,从未真正尝试过任何其他语言,但决定我应该尝试使用Java,我认为这会更快.
事实上,只是逐行读取CSV文件在Java中快了3倍.然而,当我应用了正则表达式的要求,Java实现被证明会比PHP脚本长10-20%.
我很有可能在Java中做错了什么,因为我就像今天一样学到了这一点.以下是两个脚本,任何建议将不胜感激.我真的不想放弃这个特定项目的Java.
PHP代码
<?php
$bgtime=time();
$patterns =array(
"/SOME REGEXP/",
"/SOME REGEXP/",
"/SOME REGEXP/",
"/SOME REGEXP/"
);
$fh = fopen('largeCSV.txt','r');
while($currentLineString = fgetcsv($fh, 10000, ","))
{
foreach($patterns AS $pattern)
{
preg_match_all($pattern, $currentLineString[6], $matches);
}
}
fclose($fh);
print "Execution Time: ".(time()-$bgtime);
?>
Run Code Online (Sandbox Code Playgroud)
JAVA CODE
import au.com.bytecode.opencsv.CSVReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.ArrayList;
public class testParser
{
public static void main(String[] args)
{
long start = System.currentTimeMillis();
String[] rawPatterns = {
"SOME REGEXP",
"SOME REGEXP",
"SOME REGEXP", …Run Code Online (Sandbox Code Playgroud)