Java String.split的替代方案,以获得更好的性能

Java String.split的替代方案,以获得更好的性能,java,arrays,performance,api,split,Java,Arrays,Performance,Api,Split,在通过导入csv/tab分离文件添加数据的过程中,我的代码需要花费大量时间上传数据。是否有其他方法可以更快地完成此任务??这是我用来分割数组中字段的代码 //Here - lineString = fileReader.readLine() public static String [] splitAndGetFieldNames(String lineString ,String fileType) { if(lineString==null || lineString.tri

在通过导入csv/tab分离文件添加数据的过程中,我的代码需要花费大量时间上传数据。是否有其他方法可以更快地完成此任务??这是我用来分割数组中字段的代码

 //Here -  lineString = fileReader.readLine()

public static String [] splitAndGetFieldNames(String lineString ,String fileType) 
{
    if(lineString==null || lineString.trim().equals("")){
        return null;
    }
    System.out.print("LINEEEE   " +  lineString);
    String pattern = "(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))";
    if(fileType.equals("tab"))
        pattern = "\t" + pattern;
    else
        pattern = "," + pattern;

    String fieldNames[] = lineString.split(pattern);


    for(int i=0 ; i < fieldNames.length ; i++){
        //logger.info("Split Fields::"+fieldNames[i]);
        if (fieldNames[i].startsWith("\""))
            fieldNames[i] = fieldNames[i].substring(1);
        if (fieldNames[i].endsWith("\""))
            fieldNames[i] = fieldNames[i].substring(0, fieldNames[i].length()-1);
        fieldNames[i] = fieldNames[i].replaceAll("\"\"","\"").trim();
        //logger.info("Split Fields after manipulation::"+fieldNames[i]);
    }
    return fieldNames;
}
//Here-lineString=fileReader.readLine()
公共静态字符串[]SplitAndGetFieldName(字符串lineString,字符串文件类型)
{
if(lineString==null | | lineString.trim().equals(“”){
返回null;
}
系统输出打印(“LineEE”+lineString);
字符串模式=“(?=(?:[^\“]*\”[^\“]*\”*(?![^\“]*\”)”;
if(fileType.equals(“tab”))
pattern=“\t”+模式;
其他的
pattern=“,”+模式;
字符串字段名[]=lineString.split(模式);
对于(int i=0;i
我建议您看看这个库,或者从ApacheCommons

无论如何,重新发明轮子并不是最好的主意。使用第三方库比自己编写更省事:)

使用类似CSV的解析器


Univocity提供了一个新的解决方案。它说这很快,这并不奇怪。您可以试试。

您是否尝试使用CSV解析器而不是重新发明轮子?它可能经过优化,比您的代码更快