java中sort排序_数据结构算法总结

java中sort排序_数据结构算法总结数组Sort排序正序排序:Arrays.sort(array),会检查数组个数大于286且连续性好就使用归并排序,若小于32使用插入排序,其余情况使用快速排序int[]array={10,3,6,1,4,5,9};Arrays.sort(array);降序排序:先将数组Arrays.asList()转为集合,然后使用Collections.reverse()反转集合,注意如果是基础数据类型(不是数据包装类),不能使用Arrays.asList()方法可以使用Guava的Int..

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

  1. 数组Sort排序

    正序排序:Arrays.sort(array),会检查数组个数大于286且连续性好就使用归并排序,若小于32使用插入排序,其余情况使用快速排序

    int[] array = { 
         10, 3, 6, 1, 4, 5, 9};
    Arrays.sort(array);
    

    降序排序:先将数组Arrays.asList()转为集合,然后使用Collections.reverse()反转集合,注意如果是基础数据类型(不是数据包装类),不能使用Arrays.asList()方法可以使用Guava的Ints.asList()方法代替

    Integer[] array = { 
         10, 3, 6, 1, 4, 5, 9};
    Arrays.sort(array);
    List<Integer> list = Arrays.asList(array);
    Collections.reverse(list);//冒泡 交换
    
  2. 简单集合Sort排序

    说明:主要是对jdk类库中的包装类排序,例如:Integer、String等,这些类都已经重写了Compare方法,都有默认排序规则

    常规方式

    List<Integer> list = new ArrayList<Integer>(Arrays.asList(10, 3, 6, 1, 4, 5, 9));
    // 升序
    Collections.sort(list);
    // 降序
    Collections.sort(list, Collections.reverseOrder());
    

    lambda方式

    // 升序
    List<Integer> collect = list.stream().sorted().collect(Collectors.toList());
    // 降序
    List<Integer> collect = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
    
    lists.sort((o1,o2)->o1.getAge()-o2.getAge());
    lists.sort(Comparator.comparing(Person::getAge).reversed().thenComparing(Person::getName));
    
    
  3. 对象集合Sort排序

    lambda方式:排序值不能为null

    //方法二:使用stream sorted方法 
     list=list.stream().sorted((s2,s1 )->s1.getShowOrder().compareTo(s2.getShowOrder())).collect(Collectors.toList());
    //方法三:使用jdk8的sort方法
     list.sort((s2,s1)->s1.getShowOrder().compareTo(s2.getShowOrder()));
    //方法四:总结
        Arrays.sort(array, (v1, v2) -> v1[0] - v2[0]);
        Collections.sort(list, (o1,o2)->o1[0]-o2[0]);
        list.sort((o1, o2) -> o1[0] - o2[0]);
    

    Comparable方式:在实体中实现Comparable<实体>接口,重写compareTo方法,缺点不灵活

    public class Student implements Comparable<Student> { 
         
    	private String name;
    	private Integer age;
    
    	public int compareTo(StudentAsc o) { 
         
      		if(null == this.age) { 
         
          		return -1;
      		}
      		if(null == o.getAge()) { 
         
          		return 1;
      		}
      		return this.age.compareTo(o.getAge());
    	}
    }
    

    Comparator方式:使用Collections.sort(List list, Comparator<? super T> c)方法来实现相对上面来说灵活很多

    Collections.sort(students, new Comparator<Student>() { 
         
     	public int compare(Student o1, Student o2) { 
         
        	if(null == o1.getAge()) { 
         
            	return -1;
        	}
       	 	if(null == o2.getAge()) { 
         
            	return 1;
       	 	}
       	 	return o1.getAge().compareTo(o2.getAge());
     	}
    });
    
  4. Sort方法详解(待补充)

    说明:Collections.sort方法底层就是调用的array.sort方法,根据数据大小的不同会使用插入排序、归并排序、快速排序(后两种排序算法都是分治思想)

参考:
https://blog.csdn.net/whp1473/article/details/79678974
https://blog.csdn.net/MrLiar17/article/details/89188038

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/169884.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • C++ 重制植物大战僵尸(Cocos2dx开源项目)

    此游戏全部由本人自己制作完成。游戏大部分的素材来源于原版游戏素材,少部分搜集于网络,以及自己制作。此游戏为同人游戏而且仅供学习交流使用,任何人未经授权,不得对本游戏进行更改、盗用等,否则后果自负。目前有六种僵尸和六种植物,植物和僵尸的动画都是本人做的。qq:2117610943最新视频–>点击观看开源代码下载提取码:3vzm点击下载–>11月28日新增…

  • css绝对定位的参照物是什么_css 清除上定位

    css绝对定位的参照物是什么_css 清除上定位css绝对定位的重新认知所谓的css绝对定位,就是position:absolute;这里记录一个我的错误认知,就是绝对定位的参照物是内容,还是内容+内边距,我一直以为参照物就是内容,但是实际上参照物是内容+内边距看看下面的事例<!DOCTYPEhtml><html><head><metachars…

    2022年10月25日
  • [欧拉回路] hdu 3018 Ant Trip

    [欧拉回路] hdu 3018 Ant Trip

    2021年12月16日
  • 大学本科数学专业课程有哪些(数学专业大一上学期课程)

    专业基础类课程:解析几何(大一上学期)数学分析I(大一上学期)数学分析II(大一下学期)数学分析III(大二上学期)高等代数I(大一上学期)高等代数II(大一下学期)常微分方程(大二上学期)抽象代数(大二下学期)概率论基础(大二下学期)复变函数(大二下学期)近世代数(大二下学期)专业核心课程:实变函数(大三上学期)偏微分方程(大三上学期)概率论(大三上…

  • React saga_react获取子组件ref

    React saga_react获取子组件ref前言React的作用View层次的前端框架,自然少不了很多中间件(ReduxMiddleware)做数据处理,而redux-saga就是其中之一,目前这个中间件在网上的资料还是比较少,估计应用的不是很广泛,但是如果使用得当,将会事半功倍的效果,下面仔细介绍一个这个中间件的具体使用流程和应用场景。redux-saga简介Redux-saga是Redux的一个中间件,主要集中处理rea…

  • idea20212激活码 3月最新注册码

    idea20212激活码 3月最新注册码,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号