Browse Source

Optimize StringSequence

Closes gh-15473
pull/16246/head
dreis2211 7 years ago committed by Stephane Nicoll
parent
commit
27e89bbb8a
  1. 15
      spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/StringSequence.java

15
spring-boot-project/spring-boot-tools/spring-boot-loader/src/main/java/org/springframework/boot/loader/jar/StringSequence.java

@ -66,6 +66,9 @@ final class StringSequence implements CharSequence { @@ -66,6 +66,9 @@ final class StringSequence implements CharSequence {
if (subSequenceEnd > this.end) {
throw new StringIndexOutOfBoundsException(end);
}
if (start == 0 && subSequenceEnd == this.end) {
return this;
}
return new StringSequence(this.source, subSequenceStart, subSequenceEnd);
}
@ -100,10 +103,18 @@ final class StringSequence implements CharSequence { @@ -100,10 +103,18 @@ final class StringSequence implements CharSequence {
}
public boolean startsWith(CharSequence prefix, int offset) {
if (length() - prefix.length() - offset < 0) {
int prefixLength = prefix.length();
if (length() - prefixLength - offset < 0) {
return false;
}
return subSequence(offset, offset + prefix.length()).equals(prefix);
int prefixOffset = 0;
int sourceOffset = offset;
while (prefixLength-- != 0) {
if (charAt(sourceOffset++) != prefix.charAt(prefixOffset++)) {
return false;
}
}
return true;
}
@Override

Loading…
Cancel
Save