2016-01-12 2 views
4

У меня есть ArrayList строк версии, которые я хотел бы сортировать так, чтобы новейший был первым.Сортировка ArrayList из Major.Minor.Incremental Strings

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», что не верно в случае версий.

Я имею в виду использование интерфейса компаратора для каждой основной, младшей и инкрементной версии. Есть ли более простой способ сделать это?

+0

должны '4.0.1 <4.1' быть –

+0

Да. Поскольку в соответствии с соглашениями maven, второстепенная версия имеет приоритет над инкрементной версией – Upen

ответ

3

Upen, есть класс ComparableVersion от maven для того же.

Кроме того, обратите внимание на эту SO conversation

Я надеюсь, что это решит вашу проблему.

+1

Работает чудеса. DefaultArtifactVersion version = new DefaultArtifactVersion ("4.1.2") ;. Большое спасибо. – Upen

1

Я столкнулся с аналогичной проблемой, когда мне приходилось сравнивать версии одной и той же библиотеки, помимо числа, которое я должен был удостовериться в том, что в сравнении учитывались версии SNAPSHOT против версий выпуска. Попробовав придумать все угловые случаи, я решил не изобретать колесо и решил искать надежную реализацию для решения той же проблемы.

Я нашел исходный код maven ComparableVersion и поместил его в свой проект, так как я не хотел зависеть от этого maven jar в своем коде.

Надеюсь, это поможет вам!

Хосе Луис

Смежные вопросы