位置: IT常识 - 正文

Collections类详解(collection的属性)

编辑:rootadmin
Collections类详解

目录

一.Collections概述:

   1.1什么是Collections类:

   1.2 Collections类和collection的区别和联系:

二. Collections类的主要方法:

一.Collections概述:     1.1  什么是Collections类:Java.util.Collections是一个集合工具类,用于操作LIst,Set,Map等集合。Collections类提供了一系列的静态方法,可以实现对集合元素的排序,添加一些元素,随机排序,替换等操作。       注意:Collections类不能new对象,不是因为没有构造方法,而是因为Collections的构造方法被私有化处理了。但是调用方法可以直接通过类名调用Collections类的方法,因为Collections类中的方法都是被static修饰了,可以直接用类名调用。

推荐整理分享Collections类详解(collection的属性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:collection class,collection的属性,collection类方法,collections常用方法,collections类的作用,collection类的作用,collections类的作用,collections类的作用,内容如对您有帮助,希望把文章链接给更多的朋友!

   1.2 Collections类和collection的区别和联系:

区别:

Collections是一个工具类,有属性和静态方法Collection是一个根接口,下面有List和Set接口,两个接口各有他们具体的实现类。他们只有一个字母的区别,但是两者是完全不同的概念。

联系:

Collctions中提供给collection接口下的Set和List集合许多方法,方便对集合中的元素更好的处理。二. Collections类的主要方法:

Collections中的方法都是静态方法,可以通过类名.方法名直接调用。

1.public static void shuffle(List)。混乱排序   

2.public static <T> boolean addAll(Collection<T> c, T... elements)。添加一些元素

3.public static <T> void sort(List<T> list,Comparator<? super T> )。  排序,将集合中元素按照指定规则排序

4.public static <T extends Comparable<? super T>> void sort(List<T> list)。  排序,将集合中元素按照默认规则排序。

5.public static int binarySearch(List list, Object key)。查找,使用二分搜索法搜索指定的 List 集合,以获得指定对象在 List 集合中的索引。如果要使该方法可以正常工作,则必须保证 List 中的元素已经处于有序状态。

6.public static void copy(List <? super T> dest,List<? extends T> src)  复制, 用于将指定集合中的所有元素复制到另一个集合中。

7.public static void replaceAll()。替换,替换集合中所有的旧元素为新元素

1.shuffle()随机排序:

shuffle方法用于将集合中的元素,随机打乱原来的顺序。

          注意:shuffle中的集合只能是List集合。Set集合会报错。

使用案例:

import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest { public static void main(String[] args) {//创建一个Linkedlist集合 LinkedList linkedList = new LinkedList(); inkedList.add(123); linkedList.add(456); linkedList.add(234); linkedList.add(567); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } //打乱顺序 Collections.shuffle(linkedList); System.out.println("==========="); System.out.println("打乱顺序之后:"); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } }}

运行结果:

2.  addAll()   添加一些元素:

作用:

addAll方法用于往集合中快速添加一些元素

用法:

第一个形参放集合对象,之后放参数1 ,参数2, 可变参数类型... 。

什么是可变参数类型呢?

方法中的某个参数在实际调用时,实参个数可以0个,或者1个,或者多个。这个参数就是可变参数。可变参数参数的意义:方便方法的调用,可以传入任意多个同类型的数据。

注意点:

如果方法中有多个参数,可变参数要放到最后。

一个方法只能有一个可变参数

使用案例:

1.创建多个学生对象。

2.把学生用addAll方法装入Linkedlist集合中

import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest { public static void main(String[] args) {//创建一个linkedlist集合 LinkedList linkedList = new LinkedList(); Student student1 = new Student(1, "章1"); Student student2 = new Student(6, "章2"); Student student3 = new Student(9, "章3"); Student student4 = new Student(1, "章4");Collections.addAll(linkedList,student1,student2,student3,student4);for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); }

运行结果:

3. sort()自然排序:

作用:

Collections类详解(collection的属性)

把集合中的元素按照规则升序或者降序,再或者什么也不干。

注意点:

当使用sort方法时,该集合元素必须是Comparable的子类型,也就是集合中的元素必须实现comparable接口中的comparaTo方法。否则不能使用该方法。

public int compareTo(T o);

必须实现这个抽象方法,才能使用sort方法。但是由于我们一些基本的常用类如String,基本数据类型的包装类等,已经实现了该方法,所以我们不需要自己重写该方法了。自定义类型使用sort方法就必须实现comparaTo方法。

4.sort()自定义排序:

自定义类型,如学生类,有属性:年龄,姓名等。创建多个学生类对象,放入List集合中。自定义使用sort方法时就必须重写comparaTo方法。

@Override public int compareTo(Student2 o) { return this.age-o.age; }

重写之后的comparaTo方法。 

重载之后的sort():

sort()方法还有第二种类型(collection,new Comparator<Object>)

Comparator是一个接口,实际上是new了Comparator的实现类,但是要实现里面的抽象方法。

使用案例:

1.自定义一个学生类,有年龄,姓名,成绩属性。

2.创建5个学生对象,然后根据他们年龄大小实现年龄升序和成绩降序输出。

import java.util.Collections;import java.util.LinkedList;public class CollectionsTest2 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); Student2 student1 = new Student2(10, "章1"); Student2 student2 = new Student2(16, "章2"); Student2 student3 = new Student2(19, "章3"); Student2 student4 = new Student2(18, "章4"); //把对象添加到集合中 Collections.addAll(linkedList,student1,student2,student3,student4); Collections.sort(linkedList); for (int i = 0; i <linkedList.size() ; i++) { System.out.println(linkedList.get(i)); } }}class Student2 implements Comparable<Student2>{ int age; String name; public Student2(int age, String name) { this.age = age; this.name = name; } @Override public String toString() { return "Student2{" + "age=" + age + ", name='" + name + '\'' + '}'; } @Override public int compareTo(Student2 o) { return this.age-o.age; }}

 

注意点:

1.按照某种规则排序,是重写comparaTo方法时,用什么属性去比较,这个比较的属性就是比较规则排序。

2.实现升序或者降序规则:this(当前调用方法的对象)  o(参数传入)         所有比较最底层的逻辑都是发生两两比较逻辑,返回比较结果         正数  this.age > o.age         负数  this.age < o.age         0     this.age==o.age。

6.copy()  复制:

 作用:将指定集合中的所有元素复制到另一个集合中。

 使用:

(List <? super T> dest,List<? extends T> src)

dest是目标集合,src是原集合。把原集合中的元素放到目标集合中。

使用注意点:

1。原集合复制到目标集合中去,原集合会覆盖掉目标集合中元素,这个覆盖从索引值为0开始覆盖,直到原集合复制完毕。

2.目标集合的长度至少和源集合的长度相同,如果目标集合的长度更长,则不影响目标集合中的其余元素。如果目标集合长度不够而无法包含整个源集合元素,程序将抛出 IndexOutOfBoundsException 异常。

3.copy方法也只能复制List集合,不能复制set集合

个人见解:由于会覆盖掉目标集合的元素,我觉得没有太多的用处

使用案例:

1.把集合1赋值到集合2中

import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest2 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); LinkedList linkedList1 = new LinkedList();//创建两个set集合 HashSet hashSet = new HashSet(); HashSet hashSet1 = new HashSet(); linkedList1.add(123); linkedList1.add(222); linkedList.add(333); linkedList.add(444); linkedList.add(888); hashSet.add(234); hashSet1.add(666); Collections.copy(linkedList, linkedList1); //使用copy方法复制set会报错// Collections.copy(hashSet,hashSet1); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i));// } } }}

运行结果:

7.replaceAll()。替换:

作用:替换集合中所有的旧元素为新元素

使用:

(List list, Object oldVal, Object newVal)

list需要替换的集合,oldval需要被替换的值,newval新的值

使用案例:

把集合中的333替换成字符串“8888”

import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;public class CollectionsTest2 { public static void main(String[] args) { LinkedList linkedList = new LinkedList(); linkedList.add(123); linkedList.add(222); linkedList.add(333); linkedList.add(444); linkedList.add(888); hashSet.add(234); hashSet1.add(666);//替换 Collections.replaceAll(linkedList,333,"8888"); for (int i = 0; i < linkedList.size(); i++) { System.out.println(linkedList.get(i));// } } }}
本文链接地址:https://www.jiuchutong.com/zhishi/299767.html 转载请保留说明!

上一篇:troff命令 格式化打印机和字符终端的文本(trace 命令用法)

下一篇:JS解构赋值(js解构赋值浏览器报错)

  • qq退群后怎么恢复活跃等级(qq退群后怎么恢复等级)

    qq退群后怎么恢复活跃等级(qq退群后怎么恢复等级)

  • 蜂窝移动号码什么意思(中国移动蜂窝号码)

    蜂窝移动号码什么意思(中国移动蜂窝号码)

  • 支付宝看不到电子回单(支付宝看不到电费余额怎么回事)

    支付宝看不到电子回单(支付宝看不到电费余额怎么回事)

  • 天猫精灵勿扰模式是什么(天猫精灵勿扰模式会离线吗)

    天猫精灵勿扰模式是什么(天猫精灵勿扰模式会离线吗)

  • 微信看拼多多黑屏怎么回事(微信拉黑了拼多多还能看见对方)

    微信看拼多多黑屏怎么回事(微信拉黑了拼多多还能看见对方)

  • 电池鼓包能刺破放气吗(电池鼓包能刺破继续用)

    电池鼓包能刺破放气吗(电池鼓包能刺破继续用)

  • 华为mate30反向充电可以给哪些手机充电(华为mate30反向充电怎么会自动关闭)

    华为mate30反向充电可以给哪些手机充电(华为mate30反向充电怎么会自动关闭)

  • qq里的星星月亮太阳代表什么(qq里的星星月亮太阳咋变多)

    qq里的星星月亮太阳代表什么(qq里的星星月亮太阳咋变多)

  • 华为nova7pro时间怎么设置24小时(华为nova7pro时间在哪设置)

    华为nova7pro时间怎么设置24小时(华为nova7pro时间在哪设置)

  • 闽政通手机号被注册怎么处理(闽政通手机号被注销忘了密码要怎么登记)

    闽政通手机号被注册怎么处理(闽政通手机号被注销忘了密码要怎么登记)

  • 怎么把手机图标变大(怎么把手机图标调小一点)

    怎么把手机图标变大(怎么把手机图标调小一点)

  • 爱奇艺能不能投屏电视(爱奇艺能不能投屏到电视机上面看)

    爱奇艺能不能投屏电视(爱奇艺能不能投屏到电视机上面看)

  • 苹果x处理器型号(苹果X处理器型号)

    苹果x处理器型号(苹果X处理器型号)

  • 手机卡恢复出厂设置有用吗(手机卡恢复出厂设置能不卡了吗?)

    手机卡恢复出厂设置有用吗(手机卡恢复出厂设置能不卡了吗?)

  • 手机qq怎么设置彩色昵称(手机qq怎么设置加好友权限)

    手机qq怎么设置彩色昵称(手机qq怎么设置加好友权限)

  • 华为mate30第一次充电需要注意什么(华为mate30第一次开机激活步骤)

    华为mate30第一次充电需要注意什么(华为mate30第一次开机激活步骤)

  • 华为nova5pro怎么分屏操作(华为nova5pro怎么取卡)

    华为nova5pro怎么分屏操作(华为nova5pro怎么取卡)

  • 耳机没标lr怎么分左右(耳机没有标志)

    耳机没标lr怎么分左右(耳机没有标志)

  • 华为手机怎么定位对方位置(华为手机怎么定位找回)

    华为手机怎么定位对方位置(华为手机怎么定位找回)

  • 黑鲨2两侧灯光怎么开(黑鲨手机两侧灯条怎么开启)

    黑鲨2两侧灯光怎么开(黑鲨手机两侧灯条怎么开启)

  • vivo如何关广告(vivo怎么取消广告)

    vivo如何关广告(vivo怎么取消广告)

  • vivoz5怎么截屏(viviz5怎么截图)

    vivoz5怎么截屏(viviz5怎么截图)

  • 手机应用不显示在桌面(手机应用不显示名称怎么设置)

    手机应用不显示在桌面(手机应用不显示名称怎么设置)

  • 打英文字母突然变为全角字符(打英文字母突然没声音了)

    打英文字母突然变为全角字符(打英文字母突然没声音了)

  • 给职工租房的房租怎么进行账务处理?
  • 一般纳税人什么情况可以开3%的发票
  • 企业购买土地如何做账
  • 固定收益款可以开增值税专票吗?
  • 进项税当月申报怎么申报
  • 差旅费实际报销金额超出标准报销金额怎么才能体现出来
  • 单位处置车辆账务处理
  • 研发项目领原料加工成产品会计处理是怎样的?
  • 工资分两次发的风险是什么?
  • 增值税开票资料没有电话可以吗
  • 快递费税率是6还是9
  • 房产租赁中的免租期间需要交房产税吗
  • 半年报利润分配是否需要审计?
  • 收不到租金怎么解除合同
  • 什么发票可以抵成本
  • 不需要缴纳增值税和免税的区别
  • mac与iphone联动
  • 专票 普票
  • win10电源模式最佳性能多耗好多电
  • 个人出售普通住房个人所得税
  • 关闭445端口方法命令
  • 修改组策略后需要重启吗
  • php glob
  • 工程施工暂估的成本的依据
  • 让劳务公司代发工资
  • kb4586853更新
  • 车辆年审收费么
  • 领取养老金后每年会增加多少
  • 收汇金额和出口金额差额大怎么办
  • 没有报税盘
  • thinkphp框架介绍
  • vue3 ref dom
  • 自动驾驶决策规划技术理论与实践电子版
  • php wechat
  • 稳岗补贴怎么申请步骤
  • 售后租回租金怎么做账
  • 工会经费的会计分录2022
  • js数组entries
  • mysql存储过程用什么调用
  • 以前年度盈余调整对应科目
  • 职工食堂的费用怎么入账
  • 所得税费用期末结转吗
  • 企业无力支付票据
  • mysql数据库死锁
  • 金税盘数据迁移到税务ukey
  • 红冲发票怎么写分录
  • 请问申报残保金怎么操作
  • 付了电费当月没有收到发票
  • 资产减值准备怎么理解
  • 自建不动产领用原材料增值税进项
  • 投资性房地产出租的会计处理
  • 公司员工机票可以抵扣多少呢
  • 出口运保费是什么费用
  • 代收通行费不征税吗
  • 公司帮别人代缴社保要交税吗
  • 财务负责人和办税员可以是一个吗
  • 餐饮招待怎么入账
  • 年初建账考虑要点
  • windowxp操作系统
  • linux安装rpm软件包的命令
  • 怎么进入bios设置界面win10
  • RAVMOND.exe - RAVMOND是什么进程.有什么作用
  • 2021年win10累积更新
  • linux限速
  • win8如何隐藏任务栏
  • yarn使用教程
  • android 快速开发
  • 支持向量机
  • js字符串的操作方法
  • shell命令读取文件并新增另一文件到指定行
  • 物理引擎演示
  • python中模块的作用
  • bootstrap要学到什么程度
  • Android 使用log4j2
  • csp2020成绩查询
  • 什么是总分机构汇总纳税
  • 小程序河南税务局
  • 河南二套房契税征收2023标准是多少
  • 甘肃省国家励志奖学金证书打印网址
  • 企业自有房屋需要交税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设