Fix update

This commit is contained in:
huangyuhui
2018-03-04 19:09:11 +08:00
parent 5656c9f351
commit 9ba6cddde7
5 changed files with 23 additions and 20 deletions

View File

@@ -43,11 +43,14 @@ public final class IntVersionNumber extends VersionNumber {
if (!(o instanceof IntVersionNumber))
return 0;
IntVersionNumber other = (IntVersionNumber) o;
int len = Math.min(this.version.size(), other.version.size());
for (int i = 0; i < len; ++i)
if (!version.get(i).equals(other.version.get(i)))
return version.get(i).compareTo(other.version.get(i));
return Integer.compare(this.version.size(), other.version.size());
int len = Math.max(this.version.size(), other.version.size());
for (int i = 0; i < len; ++i) {
int thisInt = Lang.get(this.version, i).orElse(0);
int otherInt = Lang.get(other.version, i).orElse(0);
if (thisInt != otherInt)
return Integer.compare(thisInt, otherInt);
}
return 0;
}
@Override

View File

@@ -40,13 +40,11 @@ public abstract class VersionNumber implements Comparable<VersionNumber> {
throw new IllegalArgumentException("The version " + version + " is malformed, only dots and digits are allowed.");
String[] s = version.split("\\.");
int last = s.length - 1;
for (int i = s.length - 1; i >= 0; --i)
if (Integer.parseInt(s[i]) == 0)
last = i;
ArrayList<Integer> versions = new ArrayList<>(last + 1);
for (int i = 0; i <= last; ++i)
versions.add(Integer.parseInt(s[i]));
ArrayList<Integer> versions = new ArrayList<>(s.length);
for (String value : s) versions.add(Integer.parseInt(value));
while (!versions.isEmpty() && versions.get(versions.size() - 1) == 0)
versions.remove(versions.size() - 1);
return new IntVersionNumber(Collections.unmodifiableList(versions));
}