在Java中将字符串转换为字符串数组的最快方法

时间:2019-05-16 19:36:25

标签: java android

将字符串转换为如下所示的字符串数组最快的方法是什么(由2个字符分隔):
字符串输入=“ 127856”;
String [] output = {“ 12”,“ 78”,“ 56”};
目前,我正在使用breakpoints,但速度很慢:

for

4 个答案:

答案 0 :(得分:1)

如果您不想使用正则表达式,则可以使用substring,它比字符串连接要快得多:

public static String[] mySplit(String input){
    int len = input.length(), index = 0;

    // Arrays are faster than lists
    String[] array = new String[len/2+len%2];
    for (int i = 0; i < len-1; i+=2, index++) {
        array[index]=input.substring(i,i+2);
    }
    // To handle strings with an odd number of characters
    if(input.length()%2==1) {
        array[index]=input.substring(input.length()-1);
    }
    return array;
}

Demo

答案 1 :(得分:1)

函数的输出数组应包含输入长度元素的一半(例如UPDATE Master_Product SET ID_OrderReport = ID_OrderReport + 1 WHERE ID_OrderReport>$NewitemOrderReport out.length)。接下来,输出中的每个位置都以输出索引乘以2并结束于此位置而结束(但input.length() / 2排他性的)。我认为编写函数的“最快”方法就像

String.substring(int, int)

答案 2 :(得分:0)

您也可以使用正则表达式:

double b = Math.Pow(a, 1.0 / c);

正则表达式public static String[] mySplit(String input){ String[] output = input.split("(?<=\\G.{2})"); return output; } 匹配一个空字符串,该字符串具有最后一个匹配(?<=\G...))后跟三个字符\G之前...

但是,时间复杂度是相同的。

答案 3 :(得分:0)

使用标准库通常是最好的解决方案。 java.lang.String提供了方法String[] split(String regex)。在正则表达式中,a。代表一个字符,您需要2个字符,因此正则表达式为..

public static String[] mySplit(String input){
   String array[]=input.split("..");
   return array;
}

由于未经测试,如果字符串中的字符数为奇数,我无法告诉您。

编辑:在未经测试的代码中,正则表达式是错误的。请无视我的回答。