我需要对Java7中的对象列表进行排序。请有人帮忙。
列表为: List<Question> questionlist;
问题对象:
public class Question {
public String QuestionNumber;
public String title;
public String description;
}
以下是列表中的内容: questionlist.add(new Question("12.2", "titleA", "titleA_Desc"));
questionlist.add(new Question("12.1", "titleB", "titleB_Desc")); questionlist.add(new Question("12.3", "titleC", "titleC_Desc"));
questionlist.add(new Question("12.10", "titleD", "titleD_Desc")); questionlist.add(new Question("12.4", "titleE", "titleE_Desc"));
我想对它进行分类,以便按以下顺序排列: 12.1
12.2 12.3
12.4 12.10
常规collection.sort会给我以下命令:
12.1
12.10
12.2
12.3
12.4
以下是我在java 8中尝试和使用的内容: List<String> list = Arrays.asList("12.2", "12.1", "12.3", "12.4", "12.5", "12.10");
```
List sortedList_Fix = list.stream()
.sorted(Comparator.comparing((String s) -> s.split("\."),
Comparator.comparing((String[] a) -> Integer.parseInt(a[0]))
.thenComparingInt((a) -> a.length > 1 ? Integer.parseInt(a[1]) : 0)))
.collect(Collectors.toList());
3条答案
按热度按时间qvk1mo1f1#
按以下步骤操作:
完整代码:
输出:
fwzugrvs2#
olqngx593#
为您的名单
您可以使用:
replaceall(“.\d+$”,“”)
将删除一个点之后的所有数字,然后在一个点之前得到一个数字。
replaceall(“^\d+.”,”“)
将删除一个点之前的所有数字,然后得到一个点之后的数字。