【 java 集合】Collections工具类的使用
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
📋 个人简介
- 💖 作者简介大家好我是阿牛全栈领域优质创作者。😜
- 📝 个人主页馆主阿牛🔥
- 🎉 支持我点赞👍+收藏⭐️+留言📝
- 📣 系列专栏java 小白到高手的蜕变🍁
- 💬格言要成为光因为有怕黑的人🔥
目录
前言
在学数组时有个Arrays工具类相应的我们在学完集合后也有一个Collections工具类一些方法还是很重要的大概来看一下吧
Collections概述
- Collections 是一个操作 Set 、 List 和 Map 等集合的工具类。
- Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
- 需要注意比较常见的一道面试题Collections和Collection的区别是什么
Collection是存储单列数据的集合接口Collections是操作集合的工具类当然也可以操作Map。
Collections中一些方法的测试
这里大概看一下这个工具类中比较常用的方法
排序操作
reverse ( List )反转 List 中元素的顺序
shufle ( List )对 List 集合元素进行随机排序
sort ( List )根据元素的自然顺序对指定 List 集合元素技升序排序
sort ( List , comparator )根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap ( List , int i, int j )将指定 list 集合中的 i 处元素和 j 处元素进行交换
public static void main(String[] args) {
List list = new ArrayList();
list.add(4);
list.add(2);
list.add(5);
list.add(8);
list.add(10);
System.out.println("原列表: " + list);
//反转
Collections.reverse(list);
System.out.println("反转后的列表: " + list);
//自然排序升序整数的包装类自然排序是重写好的默认升序
Collections.sort(list);
System.out.println("排序后的列表升序: " + list);
//定制排序降序
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return -Integer.compare((Integer) o1, (Integer) o2);
}
});
System.out.println("排序后的列表降序: " + list);
// 交换索引为1和2的元素
Collections.swap(list,1,2);
System.out.println("交换索引位置值后的列表: " + list);
}
查找、替换
Object max ( Collection )根据元素的自然顺序返回给定集合中的最大元素
Object max ( Collection comparator )根据 comparator 指定的顺序返回给定集合中的最大元素
Object min ( Collection ) 根据元素的自然顺序返回给定集合中的最小元素 e
Object min ( Collection comparator )
int frequency ( Collection Object e )返回指定集合中指定元素的出现次数
void copy ( List dest , List src )将 src 中的内容复制到 dest 中
boolean replaceAll ( List list , Object oldVal , Object newVal ):使用新值替换 List 对象的所有旧值
这些我不再写案例针对copy方法需要写案例强调
List list = new ArrayList();
list.add(4);
list.add(2);
list.add(5);
list.add(8);
list.add(10);
List dest = new ArrayList();
// 将list中的内容复制到dest列表
Collections.copy(dest,list);
System.out.println(dest);
可以看到这种写法报错我们看一下copy的源码
可以看到当原列表中的元素个数多于目标列表中的元素时就抛出了这个异常。
因此我们创建的ArrayList要有元素内容即dest.size>=src.size。
通常的处理写法如下
List list = new ArrayList();
list.add(4);
list.add(2);
list.add(5);
list.add(8);
list.add(10);
List dest = new ArrayList(Arrays.asList(new Object[list.size()]));
System.out.println("copy前: " + dest);
// 将list中的内容复制到dest列表
Collections.copy(dest,list);
System.out.println("copy后: "+ dest);
同步控制
之前说Arraylist,set,HashMap等都是线程不安全的Colloections工具类提供了这些方法使其同步本质上就是用synchronized ()将原先的方法包了一下通常我们不用线程安全的Vector和Hashtable。
结语
如果你觉得博主写的还不错的话可以关注一下当前专栏博主会更完这个系列的哦也欢迎订阅博主的其他好的专栏。
🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门