这里写两种实现,一种java,一种js
首先是js的
const list = [ {titleNum: '1.1.1'}, {titleNum: '1'}, {titleNum: '10'}, {titleNum: '2'} ]; list.sort((a, b) => { const aLevels = a.titleNum.split('.').map(i => parseInt(i)); const bLevels = b.titleNum.split('.').map(i => parseInt(i)); const minLength = Math.min(aLevels.length, bLevels.length); for (let i = 0; i < minLength; i++) { if (aLevels[i] !== bLevels[i]) { return aLevels[i] - bLevels[i]; } } return aLevels.length - bLevels.length; }); console.log(list);
其次是java的:
Collections.sort(list,new Comparator<Chatr>(){ @Override public int compare(Chatr o1,Chatr o2){ String[] levels1=o1.getTitleNum().split("\\."); String[] levels2=o2.getTitleNum().split("\\."); int idx=0; while(idx<levels1.length && idx<levels2.length){ int level1=Integer.parseInt(levels1[idx]); int level2=Integer.parseInt(levels2[idx]); if(level1 != level2){ return Integer.compare(level1,level2); } idx ++; } return Integer.compare(levels1.length,levels2.length); } });
以上。