2021-04-05

Java集合概述

Java集合类存放于java.util包中,是一个用来存放对象的容器。
●①集合只能存放对象。比如你存一个int型数据 1 放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本类型都有对应的引用类型。
●②集合存放的是多个对象的引用,对象本身还是放在堆内存中。
●③集合可以存放不同类型,不限数量的数据类型。

Java集合可分为Set、List 和Map三种大体系

	Set:无序、不可重复的集合
	List: 有序,可重复的集合
	Map:具有映射关系的集合

在JDK5之后,增加了泛型,Java 集合可以记住容器中对象的数据类型

List与ArrayList

List代表一个元素有序、且可重复的集合,集合中的每个元素都有对应的顺序索引|
List允许使用重复元素,可以通过索引来访问指定位置的集合元素。
List默认按元素的添加顺序设置元素的索引。
List集合里添加了一些根据索弓|来操作集合元素的方法。

Map

Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的Key,另外一组用于保存Map里的Value。
Map中的key和value 都可以是任何弓|用类型的数据。
Map中的Key不允许重复,即同一个Map对象的任何两个Key通过equals方法比较中返回false。
Key和Value之间存在单向一对一关系,即通过指定的Key总能找到唯一-的, 确定的Value。

TreeMapTreeMap存储Key-Value对时,需要根据Key对key-value对进行排序。TreeMap 可以保证所有的Key-Value对处于有序状态。

*TreeMap的Key的排序:

●自然排序: TreeMap的所有的Key必须实现Comparable接口,而且所有的Key应该是同一个类的对象,否则将会抛出ClasssCastException

●定制排序(了解) :创建TreeMap时,传入-个Comparator对象,该对象负责对TreeMap中的所有key进行排序。此时不需要Map的Key实现Comparable接口。

HashSet

HashSet是Set接口的典型实现,大多数时候使用Set集合时都使用这个实现类。我们大多数时候说的set集合指的都是HashSet
HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能。
在这里插入图片描述

HashSet具有以下特点:
1.不能保证元素的排列顺序
2.不可重复
3.HashSet不是线程安全的
4.集合元素可以使null

当向HashSet集合中存入一个元素时,HashSet 会调用该对象的hashCode()方法来得到该对象的hashCode.值,然后根据hashCode.值决定该对象在HashSet中的存储位置。
如果两个元索的equals()方法返回true,但它们的hashCode()返回值不相等,hashSet将会把它们存储在不同的位置,但依然可以添加成功。

hashCode()方法

HashSet集合判断两个元素相等的标准:两个对象通过equals()方法比较相等,并且两个对象的hashCode()方法返回值也相等。
如果两个对象通过equals()方法返回true,这两个对象的hashCode值也应该相同。

TreeSet

TreeSet是SortedSet接口的实现类,TreeSet 可以确保集合元素处于排序状态。
TreeSet支持两种排序方法:自然排序和定制排序。默认情况下,TreeSet 采用自然排序。

在这里插入图片描述

自然排序

排序: TreeSet会调用集合元素的compare To(Object obj)方法来比较元素之间的大小关系,然后将集合元素按升序排列。
●如果this > obj,返回正数1。
●如果this< obj,返回负数-1。
●如果this= obj,返回0,则认为这两个对象相等。
●必须放入同样类的对象.(默认会进行排序)否则可能会发生类型转换异常,我们可以使用泛型来进行限制。

定制排序

如果需要实现定制排序,则需要在创建TreeSet集合对象时,提供-一个Comparator接口的实现类对象。由该Comparator对象负责集合元素的排序逻辑。

**操作集合的工具类: Collections

**
Collections是一个操作Set、List 和Map等集合的工具类
Collections中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。
排序操作:
●reverse(List): 反转List中元素的顺序。
●shuffle(List): 对List集合元素进行随机排序。
●sort(List): 根据元素的自然顺序对指定List集合元素按升序排序。
●sort(List, Comparator): 根据指定的Comparator产生的顺序对List集合元素进行排序。
●swap(List, int, int): 将指定list集合中的i处元素和j处元素进行交换。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值