Java集合学习小结

集合的特点:

1、   集合支持所有的泛类,不能存放基本数据类型。

2、   集合长度可变,无限制。

 

集合类汇总图:

                         

集合的分类:

第一类Collection接口:通过更新单一对象的方式完成对集合元素的操作,List类和Set类均实现此接口。

第二类Map接口:通过更新键值对(key,value)的方式完成对集合元素的操作,此接口最常用的实现类为HashMap类和TreeMap类。

 

Collection接口:

子类List接口:存放的元素有序且允许有重复元素的集合接口。

子类Set接口:存放的元素无序不重复元素的集合接口。

 

分支Iterator:用于遍历集合的元素的对象, 它使得集合的数据结构和被遍历的对象分离,迭代器遍历被隔离对象时不会影响原对象,Map类集合不能直接调用迭代器,但是Map类提供方法间接使用迭代器。

 

一、List接口:

概念:用interface修饰不能实例化,存入元素的顺序和取出的顺序相同

 

常用的实现类:ArryaList类和LinkedList类,这两个类的构造方法和使用方法一致

 

ArryaList类和LinkedList类的区别:

1、ArrayList实现类是List接口的大小可变数组的实现(动态数组),LinkedList实现类是List 接口的链接列表实现(链表结构

2、ArrayList实现类要更新元素和删除元素时,效率比较低;但是随机访问元素值时,效率高(直接通过下标快速访问)

LinkedList实现类要插入元素和删除元素时,执行效率高;但是随机访问元素值时,效率低下(通过首地址的指向来访问元素值的)

 

二、Set接口:

概念:用interface修饰不能实例化,存入与取出的顺序不一致

 

常用的实现类:HashSet类和TreeSet类,都根据每个对象的哈希码值(调用hashCode()方法获得),找到它的下标并把对象存储到哈希表相应位置中;如果该位置没有其它元素,就直接储存;如果有元素,则进行比较元素是否一样(用equals方法),如果一样就不存储,如果不一样就存储在该位置目录下(自定义类要重写比较方法)

 

HashSet类和TreeSet类的区别:

1、   HashSet类是根据元素的哈希码来进行存放的,当取出时,也可以根据哈希码快速找到。

2、   TreeSet类使用红黑树结构对加入的元素进行排序存放,通过TreeSet构造方法来获取TreeSet对象(自定义类要重写compareTo方法)

 

Map接口:

Map类集合中不能有重复的“键”,Map实现类中存储的“键值”映射对是通过键来唯一标识的,Map底层的“键”是使用Set来存放的,因此存入Map中的映射对的“键”对应的类必须重写hashCode()和equals()方法。

常用实现类:HashMap类和TreeMap类

一、 实现类HashMap: 提供所有可选的映射操作,它内部对“键”用Set进行散列存放(hashCode()、equals()),所以根据“键”去获得“值”的效率很高

 

二、实现类TreeMap:使用红黑树结构对“键”进行排序存放,存入TreeMap中的“键-值”对的“键”必须是可以“排序”,即自定义类要重写TreeMap构造方法中的比较器Comparator或自定义类实现Comparable接口。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值