问题描述
今天在项目过程中遇到个问题,由于数据库中的字段类型存的是varchar类型,所以即使里面存的全是int值,在排序的时候也会出问题,排列结果会像下面一样:1,10,11,12,13,2,3…
原因分析:
这是由于字符串在排序的时候是按照字符串中组成的单个字符顺序排列的
解决方案:
使用java8可以用下面的方法来写
public static void main(String[] args) {
List<TestVM> list = new ArrayList<>();
list.add(new TestVM("33"));
list.add(new TestVM("34"));
list.add(new TestVM("35"));
list.add(new TestVM("36"));
list.add(new TestVM("2"));
list.add(new TestVM("3"));
list.add(new TestVM("4"));
list.add(new TestVM("5"));
list.add(new TestVM("11"));
list.add(new TestVM("12"));
list.add(new TestVM("14"));
list.add(new TestVM("2"));
System.out.println(list);
System.out.println(list.stream().sorted(Comparator.comparingInt(testVM -> Integer.parseInt(testVM.getLine()))).collect(Collectors.toList()));
}
TestVM.java
package com.mega.mes.report.service.wms.dto;
import lombok.Data;
@Data
public class TestVM {
String line;
public TestVM(String line) {
this.line = line;
}
}