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

collection和collections的区别

colleciton是集合接口,继承它的接口有list,set,注意map集合虽然也属于集合体系,但是map并不继承collection,map和collection是平级关系

collections是集合工具类,服务于colleciton,相当于collciont的工具,常用的方法有:
static <T extends Comparable<? super T>> void sort(List<T> list)
根据元素的自然顺序 对指定列表按升序进行排序。
static <T> void sort(List<T> list, Comparator<? super T> c)
根据指定比较器产生的顺序对指定列表进行排序
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
根据元素的自然顺序,返回给定 collection 的最大元素。
static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
根据指定比较器产生的顺序,返回给定 collection 的最大元素。
static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
使用二分搜索法搜索指定列表,以获得指定对象。
static <T> void fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素
static void reverse(List<?> list) 反转指定列表中元素的顺序。
static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
二分法原理

import java.util.ArrayList;
import java.util.List;

public class Demo {  

    public static void main(String[] args) {  
        List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println(list);
        int binarySearch = binarySearch(list,4);
        System.out.println(binarySearch);
    }  
    /**
     * 注意使用此方法的前提是已经排好序
     * @param list
     * @param key
     * @return
     */
    public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key){
        int max=list.size()-1;//最大的位置
        int min=0;//最小的位置
        int mid=0;//中间位置
        while(min<=max){
            mid=(max+min)>>1;

            Comparable<? super T> comparable = list.get(mid);
            int num= comparable.compareTo(key);
            if(num>0){
                max=mid-1;
            }else if(num<0){
                min=mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }
}  

转载于:https://blog.51cto.com/13579086/2070596

相关文章:

  • Eclipse自动补全增强
  • H264 RTP封包原理(转载)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • Intellij IDEA 热部署处理
  • Angular Material 攻略 03 angular Material Design 安装
  • urllib2 的使用细节(转)
  • 半理解系列--Promise的进化史
  • 游戏引擎大全
  • 【Lv1-Lesson008】A Guide to Birthdays
  • ARM9 S3C2440 定时器中断
  • 可复制的领导力(来自樊登读书会)
  • C++中的const成员函数(函数声明后加const,或称常量成员函数)用法详解
  • 孩子做错事不认错怎么办
  • iOS app被审核拒绝后如何打开解决方案中心的记录
  • Tiny4412裸机程序,按键检测
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • CentOS 7 防火墙操作
  • Docker: 容器互访的三种方式
  • hadoop集群管理系统搭建规划说明
  • vue.js框架原理浅析
  • 前端技术周刊 2019-02-11 Serverless
  • 前端之React实战:创建跨平台的项目架构
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​TypeScript都不会用,也敢说会前端?
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $$$$GB2312-80区位编码表$$$$
  • (02)Hive SQL编译成MapReduce任务的过程
  • (27)4.8 习题课
  • (C语言)逆序输出字符串
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (独孤九剑)--文件系统
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (力扣)循环队列的实现与详解(C语言)
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (七)c52学习之旅-中断
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET连接数据库方式
  • .NET中winform传递参数至Url并获得返回值或文件
  • :O)修改linux硬件时间
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []Telit UC864E 拨号上网
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ 1040] 骑士
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C++]四种方式求解最大子序列求和问题