2021-06-07

Java集合工具类与Java集合总结
一、Java集合工具类:Collections
Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对 集合元素进行排序、查询和修改等操作,还提供了对集合对象实现同步控制等方法。

1、 排序操作:
Static void reverse(List list) 反转指定列表中元素的顺序。
Static void shuffle(List list) 使用默认随机源对指定列表进行置换。
Static void sort(List list) 根据元素的自然顺序 对指定列表按升序进行排序。
Static void sort(List list, Comparator c) 根据指定比较器产生的顺序对指定列表进行排序。
Static void swap(List list, int i, int j) 在指定列表的指定位置处交换元素。
Static void rotate(List list, int distance) 根据指定的距离轮换指定列表中的元素。

2、 查找和替换操作:
在这里插入图片描述

3、 同步控制
Collections类中提供了多个 synchronized…()方法,这些方法可以将指定集合包装成线程同步(线程安 全)的集合,从而可以解决多线程并发访问集合时的线程安全问题。
Java中常用的集合框架中的实现类 ArrayList、Linkedlist、 HashSet、TreeSet、 HashMap和TreeMap 都是线程不安全的。如果有多个线程访问它们,而且有超过一个的线程试图修改它们,则存在线程安全 的问题。 Collections提供了多个类方法可以把它们包装成线程同步的集合。

二、Java集合总结
1、 List,Set,Map是集合体系中最主要的三个接口。
其中list和set是继承自collection接口
Map也属于集合系统但是与collection接口不同

2、 list是有序且允许元素重复,允许元素为null,ArrayList、LinkedList和Vector是三个主要的实现类
(1)、Vector、ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储。
(2)、Vector线程安全的(同步),ArrayList、LinkedList线程不安全的(不同步)。
(3)、ArrayList、Vector适合查找,不适合指定位置的插入、删除操作;LinkedList适合指定位置插入、删除操作,不适合查找。
(4)、ArrayList在元素填满容器时会自动扩充容器大小的50%,而Vector则是100%,因此ArrayList 更节省空间

3、 set是无序,不允许元素重复;HashSet和TreeSet是两个实现类
(1)、HashSet 基于HashMap实现,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的
(2)、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值

4、 Comparator 和 Comparable 的区别:
(1)、Comparator 定义在 类的外部, 此时我们的类的结构不需要有任何变化,从小到大:o1-o2 从大到 小:o2-o1
在这里插入图片描述

(2)、Comparable 定义在 类的内部,耦合性较强 从小到大 :this-o 从大到小:o-this
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值