对 Major.Minor.Incremental 字符串的 ArrayList 进行排序

4
我有一个版本字符串的ArrayList,我希望将其排序,以便最新的字符串排在第一个。
ArrayList<String> items = new ArrayList<String>();
items.add("4.1.0");
items.add("4.1.1");
items.add("4.1");
items.add("5.1");
items.add("4.0.1");

我期望的输出是:

5.1
4.1.1
4.1.0
4.1
4.0.1

当将值视为整数时,“4.0.1”大于“4.1”,但在版本的情况下并非如此。

我考虑使用每个主要、次要和增量版本的比较器接口。有没有更简单的方法?


4.0.1 < 4.1 应该是成立的。 - jmj
是的。根据Maven约定,次要版本优先于增量版本。 - Upen
3个回答

3

1
非常好用。DefaultArtifactVersion version = new DefaultArtifactVersion("4.1.2");。非常感谢。 - Upen

1
我曾经遇到了一个类似的问题,需要比较同一库的版本,除了数字外,还要确保比较考虑了SNAPSHOT和发布版本。在尝试解决所有边角情况后,我决定不重复造轮子,并决定寻找可信赖的实现来解决同样的问题。
我发现了maven ComparableVersion源代码,并将其放入我的项目中,因为我不想在我的代码中依赖于那个maven jar。
希望对你有所帮助!
Jose Luis

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接