📋 个人简介
- 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
- 📝 个人主页:馆主阿牛🔥
- 🎉 支持我:点赞👍+收藏⭐️+留言📝
- 📣 系列专栏:java 小白到高手的蜕变🍁
- 💬格言:要成为光,因为有怕黑的人!🔥
目录
- 📋 个人简介
- 前言
- Collections概述
- Collections中一些方法的测试
- 排序操作
- 查找、替换
- 同步控制
- 结语
前言
在学数组时有个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框架快速入门