Java获取字符串的时间复杂度_Java的子串()的时间复杂度

从跟随判断你自己,但Java的性能缺点在于其他地方,而不是在字符串的子串中。码:

public static void main(String[] args) throws IOException {

String longStr = "asjf97zcv.1jm2497z20`1829182oqiwure92874nvcxz,nvz.,xo" +

"aihf[oiefjkas';./.,z][p\\°°°°°°°°?!(*#&(@*!)^(*&(*&)(*&" +

"fasdznmcxzvvcxz,vc,mvczvcz,mvcz,mcvcxvc,mvcxcvcxvcxvcxvcx";

int[] indices = new int[32 * 1024];

int[] lengths = new int[indices.length];

Random r = new Random();

final int minLength = 6;

for (int i = 0; i < indices.length; ++i)

{

indices[i] = r.nextInt(longStr.length() - minLength);

lengths[i] = minLength + r.nextInt(longStr.length() - indices[i] - minLength);

}

long start = System.nanoTime();

int avoidOptimization = 0;

for (int i = 0; i < indices.length; ++i)

//avoidOptimization += lengths[i]; //tested - this was cheap

avoidOptimization += longStr.substring(indices[i],

indices[i] + lengths[i]).length();

long end = System.nanoTime();

System.out.println("substring " + indices.length + " times");

System.out.println("Sum of lengths of splits = " + avoidOptimization);

System.out.println("Elapsed " + (end - start) / 1.0e6 + " ms");

}

输出:

substring 32768 times

Sum of lengths of splits = 1494414

Elapsed 2.446679 ms

如果是(1)或不是,取决于。 如果你只是在内存中引用相同的String,那么想象一下非常长的String,你创建子串并停止引用long。 长期释放内存不是很好吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值