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

Collections工具类

Java中的二进制操作
进制转换

// 十进制转换为二进制
String binaryString = Integer.toBinaryString(10);
// 输出二进制字符串
System.out.println(binaryString); // 输出 "1010"
// 二进制转换为十进制
int decimal = Integer.valueOf("1010", 2);
// 输出十进制数值
System.out.println(decimal); // 输出 10

位运算
// 按位与运算
int resultAnd = 51 & 5; // 结果为 1
// 按位或运算
int resultOr = 51 | 5; // 结果为 55
// 异或运算
int resultXor = 51 ^ 5; // 结果为 54
// 取反运算
int resultNot = ~5; // 结果为 -6
// 左移运算
int resultLeftShift = 5 << 1; // 结果为 10
// 右移运算
int resultRightShift = 5 >> 1; // 结果为 2
八进制和十六进制

八进制:使用Integer.toOctalString(int n)方法,它会返回一个八进制字符串。十六进制:使用Integer.toHexString
  1. 排序操作
List<String> list = new ArrayList<>();
list.add("沉默王二");
list.add("沉默王三");
list.add("沉默王四");
list.add("沉默王五");
list.add("沉默王六");System.out.println("原始顺序:" + list);// 反转
Collections.reverse(list);
System.out.println("反转后:" + list);// 洗牌
Collections.shuffle(list);
System.out.println("洗牌后:" + list);// 自然升序
Collections.sort(list);
System.out.println("自然升序后:" + list);// 交换
Collections.swap(list, 2,4);
System.out.println("交换后:" + list);

输出是:

原始顺序:[沉默王二, 沉默王三, 沉默王四, 沉默王五, 沉默王六]
反转后:[沉默王六, 沉默王五, 沉默王四, 沉默王三, 沉默王二]
洗牌后:[沉默王五, 沉默王二, 沉默王六, 沉默王三, 沉默王四]
自然升序后:[沉默王三, 沉默王二, 沉默王五, 沉默王六, 沉默王四]
交换后:[沉默王三, 沉默王二, 沉默王四, 沉默王六, 沉默王五]
  1. 查找操作
    binarySearch(List list, Object key):二分查找法,前提是 List 已经排序过了
    max(Collection coll):返回最大元素
    max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
    min(Collection coll):返回最小元素
    min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
    fill(List list, Object obj):使用指定对象填充
    frequency(Collection c, Object o):返回指定对象出现的次数
System.out.println("最大元素:" + Collections.max(list));
System.out.println("最小元素:" + Collections.min(list));
System.out.println("出现的次数:" + Collections.frequency(list, "沉默王二"));// 没有排序直接调用二分查找,结果是不确定的
System.out.println("排序前的二分查找结果:" + Collections.binarySearch(list, "沉默王二"));
Collections.sort(list);
// 排序后,查找结果和预期一致
System.out.println("排序后的二分查找结果:" + Collections.binarySearch(list, "沉默王二"));Collections.fill(list, "沉默王八");
System.out.println("填充后的结果:" + list);
原始顺序:[沉默王二, 沉默王三, 沉默王四, 沉默王五, 沉默王六]
最大元素:沉默王四
最小元素:沉默王三
出现的次数:1
排序前的二分查找结果:0
排序后的二分查找结果:1
填充后的结果:[沉默王八, 沉默王八, 沉默王八, 沉默王八, 沉默王八]
  1. 同步控制
    HashMap 是线程不安全的,这个我们前面讲到了。那其实 ArrayList 也是线程不安全的,没法在多线程环境下使用,那 Collections 工具类中提供了多个 synchronizedXxx 方法,这些方法会返回一个同步的对象,从而解决多线程中访问集合时的安全问题
SynchronizedList synchronizedList = Collections.synchronizedList(list);
  1. 不可变集合
    emptyXxx():制造一个空的不可变集合
    singletonXxx():制造一个只有一个元素的不可变集合
    unmodifiableXxx():为指定集合制作一个不可变集合
List emptyList = Collections.emptyList();
emptyList.add("非空");
System.out.println(emptyList);

这段代码在执行的时候就抛出错误

Exception in thread "main" java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at com.itwanger.s64.Demo.main(Demo.java:61)

还有两个方法比较常用:

addAll(Collection<? super T> c, T... elements),往集合中添加元素 disjoint(Collection<?> c1, Collection<?> c2),判断两个集合是否没有交集

List<String> allList = new ArrayList<>();
Collections.addAll(allList, "沉默王九","沉默王十","沉默王二");
System.out.println("addAll 后:" + allList);System.out.println("是否没有交集:" + (Collections.disjoint(list, allList) ? "是" : "否"));
输出:
原始顺序:[沉默王二, 沉默王三, 沉默王四, 沉默王五, 沉默王六]
addAll 后:[沉默王九, 沉默王十, 沉默王二]
是否没有交集:否

在这里插入图片描述

http://www.dtcms.com/a/606010.html

相关文章:

  • 国家建设执业注册中心网站字体怎么安装到电脑wordpress
  • Android16 EDLA 开机向导的锁屏设置页面,HDMI out 鼠标不显示问题分析解决
  • 基于yolov8的SAR影像目标检测系统,支持图像、视频和摄像实时检测【pytorch框架、python源码】
  • 网站做直播功能需要注册吗腾讯广告投放平台官网
  • 网站空间 阿里云北京金山办公软件股份有限公司官网
  • 大丰有做网站的爱客crm官网
  • KingBase通过exp脚本实现数据库自动备份
  • DeepSeek的入门和使用
  • 视觉进阶篇—— PyTorch 安装
  • net开发网站站长素材音效
  • 登录场景下短信验证码功能的设计与实现(Vue 2 + Element UI + Axios附完整代码)
  • SpringBoot-36-开发实战JPA的使用(一对多)@OneToMany+@ManyToOne
  • 云桌面办公系统详解:开启灵活、安全、高效的工作新纪元
  • 尚硅谷 SpringCloud03 Sentinel服务保护(限流 熔断降级)-安装启动sentinel-请求限流-限流异常处理
  • 地产网站建设wordpress建站好么
  • EVM(以太坊虚拟机)及其运行机制详解
  • 跨境电商支付全链路解析
  • Qt+C++ 混合开发架构设计:QML 与 C++ 高效通信的解耦方案及设计模式
  • 网站项目实施方案聊城手机网站建设公司
  • Rust开发之Trait 定义通用行为——实现形状面积计算系统
  • The JAVA_HOME environment variable is not defined correctly 解决方案
  • 南昌网站建设工作开通微信公众号需要多少钱
  • 从“并发安全”到 Rust 的无畏并发实战
  • 当前网站开发的现状数据库网站建设公司
  • 网站竞价推广做网站资源管理是
  • 子域名泛解析技术详解与安全防护
  • SuperPoint 和 SIFT 的对比
  • 【云计算】【Kubernetes】 ① K8S的架构、应用及源码解析 - 核心架构与组件全景图
  • docker容器和分布式事务
  • 【剑斩OFFER】算法的暴力美学——寻找旋转排序数组中的最小值