JavaSE之集合概述

Java集合概述
Java集合类存放于java.util包中,是一个用来存放对象的容器
① 集合只能存放对象。比如你存一个int型数据1放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本类型都有对应的引用类型
② 集合存放的是多个对象的引用,对象本身还是放在堆内存中
③ 集合可以存放不同类型、不限数量的数据类型
Java集合可分为Set、List和Map三种大体系
Set:无序、不可重复的集合
List:有序,可重复的集合
Map:具有映射关系的集合

HashSet
	HashSet是Set接口的典型实现,大多数时候使用Set集合时都是用这个实现类。我们大多数时候说的set集合指的都是HashSet
	HashSet按Hash算法来存储集合中的元素,因此具有很好的存取和查找性能
	HashSet具有以下特点:
		不能保证元素的排列顺序
		不可重复
		HashSet不是线程安全的
		集合元素可以是null
	当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据hashCode值决定该对象在HashSet中的存储位置
	如果两个元素的equals()方法返回true,但他们的hashCode()返回值不相等,HashSet将会把他们存储在不同的位置,但依然可以添加成功

			实现			继承
	HashSet——————>set接口——————>Collection接口

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

			  实现				   继承			     继承		继承
	TreeSet类——————>NavigableSet接口————>SortedSet接口————>Set接口————>Collection接口

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

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

			   实现		   继承
	ArrayList类————>List接口————>Collection接口

	ArrayList和Vector是List接口的两个典型实现
	区别:
		Vector是一个古老的集合,通常建议使用ArrayList
		ArrayList是线程不安全的,而Vector是线程安全的
		即使为保证List集合线程安全,也不推荐使用Vector

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

	HashMap & Hashtable
		HashMap 和 Hashtable是Map接口的两个典型实现类
		区别:
			Hashtable是一个古老的Map实现类,不建议使用
			Hashtable是一个线程安全的Map实现,但HashMap是线程不安全的
			Hashtable不允许使用null作为key和value,而HashMap可以
		与HashSet集合不能保证元素的顺序一样,Hashtable、HashMap也不能保证其中key-value对的顺序
		Hashtable、HashMap判断两个key相等的标准是:两个key通过equals方法返回true,hashCode值也相等
		Hasht相等的标准是:两个value通过equalHashMap判断两个values方法返回true


	TreeMap
		TreeMap存储Key-Value对时,需要根据key-value对进行排序。TreeMap可以保证所有的key-value对处于有序状态
		TreeMap的key的排序:
			自然排序:TreeMap的所有的key必须实现Comparable接口,而且所有的key应该是同一个类的对象,否则将会抛出ClassCastException
			定制排序(了解):创建TreeMap时,传入一个Comparator对象,该对象负责对TreeMap中的所有key进行排序。此时不需要Map的key实现Comparable接口

	一般使用map集合,不会使用过于复杂对象做key

操作集合的工具类: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、付费专栏及课程。

余额充值