有关容器

Collection
作为 容器的父接口
collection 允许有重复的元素
两种子接口:
Set子接口:无序的不可重复,包含子类(HashSet)
Lis子接口:有序的可重复,包含(ArrayList,LinkList)

容器可以存储任意类型的数据
只能存储引用数据类型的数据,自动装箱

容器类对象:
Collection<> col=new ArrayList();
<>中可以加入数据类型如String,表示规定容器中所有数据的数据类型,提高稳定性和可读性,称为泛型
遍历方法:
增强for,
迭代器(Iterator it=col.iterator());

  1. 获取迭代某一个容器的迭代器对象
  2. 判断是否存在下一个可迭代的元素 hasNext() ->true,false
  3. 返回下一个元素 next() ->下一个元素

List:
ArrayList
有序可重复,有索引
新增了一些根据索引操作的方法
List list=new ArrayList();
遍历方法:
普通for,增强for,迭代器,ListLterator

LinkedList:
底层:双向链表实现
优点:增删效率高
缺点:查询或随机获取效率低
新增方法:新增了一些操作与链表头和链表尾的功能(见名知意的方法使用)
创建对象:
LinkedList list=new LinkedList();

Set:
无序的不可重复的,null值只能存在一个
没有新增方法,与Collection中功能相同
创建对象:
Set set=new HashSet();
遍历:
1.增强for
2.迭代器

HashSet:
底层:有HashMap维护的
底层:由哈希表结构存储(数组+链表+红黑树)
优点:查询,增加,删除效率较高
缺点:无序
扩容:默认初始容量16,加载因子0.75 ,扩容是原容量的2倍
创建对象:
HashSet set=new HashSet();

HashSet存储引用数据类型去重:
①需要重写hashCode()方法和equals()方法进行自定义类型去重(shift+alt+s内)
② 如果不重写hashCode(),可以遇到没有equals方法这一步就医过滤掉不是相同的对象了,直接存储,不会equals方法比较
注:
①hashCode()相同的对象有可能相同可以不相同,进一步比较equals()
②hashCode()不相同的对象肯定不相同,过滤掉一写不相同的对象,不需要进一步比较equals方法效率较高

TreeSet :
是由TreeMap维护的
底层:红黑树结构实现
优点:默认升序排序(默认自然排序|指定排序)
缺点:没有HashSet效率高
创建对象:
TreeSet tree=new TreeSet();

存储引用数据类型的时候(引用数据类型对象的排序,引用数据类型对象的去重):
引用数据类型1)实现内部比较器 2)自定义外部比较器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值