树状结构数据按照顺序排序

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

以上。

你可能感兴趣的:(java,linux,运维,服务器,java)