这里写两种实现,一种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);
}
});
以上。