当前位置: 首页 > news >正文

collections工具类 排序

Collections:操作集合元素的工具类,由静态方法组成
    void sort(List): 集合元素排序
    void sort(List<T> list, Comparator<? super T> c) 集合元素排序
    例如:有一个list集合(ArrayList),元素排序
        方法1:
        Collections.sort(list);//必须保证list集合中的元素已经实了Comparable接口
        方法2:
        //自定义比较器的类,实现Comparator接口
        class XxxComXxxComparator implements Comparator<元素类型>(){
            public int compare(元素类型 t1, 元素类型 t2){
                //比较大小的代码
                return 0;
            }
        }
 
        Collections.sort(list, new XxxComparator());
        //XxxComparator必须是实现了Comparator接口的实现类,可以使用匿名实现,如下:
        Collections.sort(list, new Comparator<元素类型>(){
            public int compare(元素类型 t1, 元素类型 t2){
                //比较大小的代码
                return 0;
            }
        });

 

 
    int binarySearch(List, E):二分法查找
    List必须是实现自然排序(元素类型实现了Comparable接口)后,才能使用二分法查找
    返回负数表示查找失败
 
 
    void reverse(List) :将列表元素反转
 
 
    void shuffle(List) :将列表元素混排
    void shuffle(List<?> list, Random rnd) 将列表元素混排
 

 
//自定义排序算法
for(int i=0; i<col.size()-1; i++){
    for(int j=i+1; j<col.size();j++){
        if(比较索引号i和j对应位置元素的大小){
            //两个元素交换
            Object t1 = col.get(i);
            Object t2 = col.get(j);
            col.set(i,t2);
            col.set(j,t1);           
        }
    }
}

 

 
//使用Collections中的sort()实现自然排序
第一步:
    实体类实现Comparable接口,实现compareTO()方法。
第二步:
    调用sort()方法
    Collections.sort(list集合)
 
//使用Collections中的sort()实现指定比较 器排序
第一步:
    单独定义一个比较器实现Comparator接口
    有两种方法:
        1.内部类
        class 比较器名 implements Comparator<元素类型>{
            @Override
            public int compare(元素类型 o1, 元素类型 o1){
                o1元素与o2元素的比较
                o1大于o2返回正数
                o1小于o2返回负数
                o1,o2相等,返回0
 
                return 0;
            }
        }
 
 
        2.匿名内部类(不要单独定义,在调用时定义)
第二步:   
    调用sort()方法1
    Collections.sort(list集合, new 比较器() );
    调用sort()方法2:匿名内部类
    Collections.sort(list集合, new Comparator<元素类型>(){
        public int compare(元素类型 o1, 元素类型 o1){
                o1元素与o2元素的比较
                o1大于o2返回正数
                o1小于o2返回负数
                o1,o2相等,返回0
 
                return 0;
            }
    } );
 
 
 

转载于:https://www.cnblogs.com/zachary7/p/8191551.html

相关文章:

  • 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  • Design Pattern: Builder 模式
  • xml 相关操作
  • activity添加切换动画之后出现的黑色背景问题
  • GNU make manual 翻译( 一百五十八)
  • Linux自学笔记——nginx详解
  • POJ 1722 DP
  • centos搭建ssh
  • Direct2D入门
  • Mina2.0框架源码剖析(二)
  • 64位ubuntu下安装32位jdk
  • response.setHeader()的用法
  • PCIE BAR空间
  • HDU5115:Dire Wolf——题解+翻译
  • JS常用代码
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 2019.2.20 c++ 知识梳理
  • Docker 笔记(2):Dockerfile
  • HashMap ConcurrentHashMap
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Laravel5.4 Queues队列学习
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue ES6 Jade Scss Webpack Gulp
  • Web设计流程优化:网页效果图设计新思路
  • 关于extract.autodesk.io的一些说明
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #pragma 指令
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (20050108)又读《平凡的世界》
  • (JS基础)String 类型
  • (补)B+树一些思想
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (五)关系数据库标准语言SQL
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)ObjectiveC 深浅拷贝学习
  • ***测试-HTTP方法
  • .net core 6 redis操作类
  • .net 调用php,php 调用.net com组件 --
  • .net专家(张羿专栏)
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • [20190416]完善shared latch测试脚本2.txt
  • [AIGC] MySQL存储引擎详解
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成
  • [codevs 1296] 营业额统计
  • [FZSZOJ 1223] 上海红茶馆
  • [Gym-102091E] How Many Groups
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [Jquery] 实现鼠标移到某个对象,在旁边显示层。
  • [JS]数据类型
  • [LuoguP1141]01迷宫
  • [python] dataclass 快速创建数据类