第十七章 集合Collection 1


17.1 概述
存储对象的容器。
集合的长度是可变的(数组不可变)。
集合中不可以存储基本数据类型,只能存对象。(数组可以)。

17.2 体系&共性功能
Collection是集合的根接口,包含了集合的共性功能。
添加 add(); addAll(Collection);
删除 remove(); removeAll(Collection); clear();
查询 size(); iterator();
判断 contains(); containsAll(); isEmpty(); 
其他 toArray(); equals(); hasCode(); retainAll();

17.3 迭代器使用
while(iterator.hasNext()){
iterator.next();
}
//or
for (iterator; iterator.hasNext; ){
iterator.next();
}



17.4 迭代器的原理
通过内部类实现,iterator是集合的内部类。

17.5 List和Set的特点
List有序(存储顺序);Set无序。
List有索引,科技精确控制;Set没有索引。
List可存储重复的元素;Set中元素不能重复。(*)
因为具有索引,List较于父类Collection具有更多操作索引的方法。

17.6 ListIterator 接口
迭代器和集合不能同时操作集合内元素。
当需要在迭代器中操作元素(添加、删除等),使用Iterator子接口ListIterator(仅限List集合)
ListIterator it = list.ListIterator();
while(it.hasNext()){
it.add();//此时使用迭代器操作,而不是集合
}
it.hasPrevious();
it.previous();//可用于逆向遍历

List的常用子类
Vector:数据结构为数组,同步。
ArrayList:数据结构为数组,不同步。

LinkedList:数据结构为链表,不同步。

17.7 Vector(逐渐被ArrayList取代)

addElement(); -->add();
elementAt();-->ger();
hasMoreElements()();-->hasNext();
capacity();

17.8 LinkedList
add(index,element);
addFirst();
addLast();

pollFirst();(获取但不移除,列表为空时返回null)
pollLast();
removeFirst();(获取且移除,列表为空时抛出NoSuchElementException)
removelast();

getFirst();(列表为空时抛出NoSuchElementException)
getLast()
peekFirst;(列表为空时返回null)
peekLast;



17.9 LinkedList练习
使用上述几个方法,可以模拟实现堆栈、队列数据结构。

17.10 HashSet
Set不重复,无序
内部数据结构是哈希表、
HashSet不同步

17.11 哈希表
按元素的哈希值进行存储
Object方法 hashCode();

哈希表判断元素是否相同:
1)判断哈希值是否相同(hashCode())
2)若哈希值相同再判断内容是否相同(equals())

哈希冲突(哈希值相同但内容不同,很少发生)
哈希表存储自定义对象时,需要重写equals()方法,或者也可重写hashCode()方法

LinkedHashSet 双重链表+哈希表,唯一且有序

17.12 TreeSet
可以对集合内元素进行指定顺序的排序
存储自定义对象时,TreeSet存储的元素应该实现Comparable接口
重写compareTo()方法(return正、负、0)

除了使元素可比较,也可以使集合自身实现Comparator接口,重写compare()方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值